Объект 'WSGIRequest' не имеет атрибута 'user' в Google App Engine - PullRequest
2 голосов
/ 12 сентября 2010

Я новичок в django и Google App Engine, и у меня возникают проблемы с использованием хранилища данных.Каждый раз, когда я делаю запрос, такой как

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

, я получаю сообщение об ошибке:

'WSGIRequest' object has no attribute 'user'

Эта ошибка, похоже, генерируется в context_processors.py в ядре django.Теперь совет, который я нашел в Интернете, закомментировал связанные с пользователем 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',
)

Мой объект Listing определен следующим образом (ранее он имел свойство author, но теперь он закомментирован и объект был переопределен с новым именем):

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

Кто-нибудь знает, что вызывает эту ошибку и как ее исправить?Возможно ли, что вам нужно как-то сбросить настройки?

1 Ответ

1 голос
/ 11 ноября 2010

UPDATE

Решение, предложенное sdolan, заключается в добавлении в файл settings.py приложения следующего содержания:

TEMPLATE_CONTEXT_PROCESSORS = ( "Django.core.context_processors.debug", "Django.core.context_processors.i18n")

Это эффективно удаляет третий процессор по умолчанию, django.core.context_processors.auth (которого не должно быть, потому что для AppEngine нам не нужен компонент авторизации Django).

Спасибо, Сдолан, за решение! надеюсь, кто-то еще может использовать это тоже. :)

@ Ник , я думаю, что стоит поместить эту золотую часть о CONTEXT_PROCESSORS в учебник (http://code.google.com/appengine/articles/django.html)

(Оригинальный ответ на вопрос)

Иметь ту же проблему, в поисках решения .... Все отлично работает, когда settings.py содержит

DEBUG = True

но эта ошибка появляется (и убивает мою мотивацию для продолжения обучения), когда я переключаюсь на

DEBUG = False

@ Ник Джонсон, вот трассировка стека:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...