2010-09-11 75 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

相關問題