2010-09-11 109 views
2

我是django和Google App Engine的新手,并且在使用数据存储时遇到问题。每次我做一个查询,如'WSGIRequest'对象在Google App Engine中没有属性'user'

db.GqlQuery("SELECT * FROM Listing ORDER BY date DESC LIMIT 10") 

我收到的错误:

'WSGIRequest' object has no attribute 'user' 

这个错误似乎Django的核心内context_processors.py产生。现在,我在互联网上发现的建议表示要评论用户相关的INSTALLED_APPS和MIDDLEWARE_CLASSES,但这似乎没有帮助。我的代码如下所示:

MIDDLEWARE_CLASSES = (
# 'django.middleware.common.CommonMiddleware', 
# 'django.contrib.sessions.middleware.SessionMiddleware', 
# 'django.contrib.auth.middleware.AuthenticationMiddleware', 
# 'django.middleware.doc.XViewMiddleware', 
) 

INSTALLED_APPS = (
# 'django.contrib.auth', 
    'django.contrib.contenttypes', 
# 'django.contrib.sessions', 
    'django.contrib.sites', 
) 

我的清单对象定义为以下(它有一个author属性较早,但这种情况正在注释掉和对象用新名称重新定义):

class Listing(db.Model): 
    #author = db.UserProperty() 
    address = db.StringProperty() 
    date = db.DateTimeProperty(auto_now_add=True) 
    coords = db.GeoPtProperty() 

有谁知道是什么原因导致这个错误,以及如何解决它?这可能是不得不重置设置的情况吗?

+0

请包括异常堆栈跟踪。 – 2010-09-13 10:23:16

+1

如果您删除了所有auth应用程序,则还需要注释在'CONTEXT_PROCESSORS'中设置的auth上下文处理器。 – sdolan 2010-11-11 20:22:26

回答

1

UPDATE

通过sdolan提出的解决方案似乎是以下内容添加到应用程序的settings.py:

TEMPLATE_CONTEXT_PROCESSORS =( “django.core.context_processors.debug”, “django.core.context_processors.i18n”)

这有效地除去第三默认处理器,django.core.context_processors.auth(其不应该存在是因为AppEngine我们不需要Django的auth组件)。

谢谢sdolan的解决方案!希望别人也可以使用它。 :)

@Nick,我认为这是值得把这个约CONTEXT_PROCESSORS金片教程(http://code.google.com/appengine/articles/django.html

(原后续的问题)

有同样的问题,寻找为解决方案....所有当settings.py包含

DEBUG工作正常=真

但这个错误弹出(和杀死我的动机与学习进行)当我切换到

DEBUG =假

@Nick约翰逊,这里的堆栈跟踪:

Traceback (most recent call last): 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3211, in _HandleRequest 
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3154, in _Dispatch 
    base_env_dict=env_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 527, in Dispatch 
    base_env_dict=base_env_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2404, in Dispatch 
    self._module_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2314, in ExecuteCGI 
    reset_modules = exec_script(handler_path, cgi_path, hook) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2212, in ExecuteOrImportScript 
    script_module.main() 
    File "C:\Dev\appengine\djangotest\main.py", line 37, in main 
    util.run_wsgi_app(application) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\util.py", line 97, in run_wsgi_app 
    run_bare_wsgi_app(add_wsgi_middleware(application)) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\util.py", line 115, in run_bare_wsgi_app 
    result = application(env, _start_response) 
    File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\core\handlers\wsgi.py", line 189, in __call__ 
    response = self.get_response(request) 
    File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\core\handlers\base.py", line 103, in get_response 
    return callback(request, **param_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\views\defaults.py", line 79, in page_not_found 
    return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path}))) 
    File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\context.py", line 100, in __init__ 
    self.update(processor(request)) 
    File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\core\context_processors.py", line 18, in auth 
    'user': request.user, 
AttributeError: 'WSGIRequest' object has no attribute 'user' 
+0

谢谢 - 我从来没有回答堆栈跟踪,因为我放弃了GAE(并重新编写了所有相关代码),然后再添加评论。 – 2010-11-11 21:26:23

相关问题