代码之家  ›  专栏  ›  技术社区  ›  Herman Schaaf

“wsgirequest”对象在Google应用程序引擎中没有属性“user”

  •  2
  • Herman Schaaf  · 技术社区  · 15 年前

    我对django和google应用程序引擎不熟悉,在使用数据存储时遇到了麻烦。每次我提出疑问时,例如

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

    我收到错误:

    'WSGIRequest' object has no attribute 'user'
    

    此错误似乎是在django核心的上下文processors.py中生成的。现在,我在互联网上找到的建议是评论用户相关的已安装的应用程序和中间件类,但这似乎没有帮助。我的代码如下:

    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()
    

    有人知道是什么导致了这个错误,以及如何修复它吗?这可能是一个必须以某种方式重置设置的情况吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jakub P.    15 年前

    更新

    sdolan建议的解决方案似乎是将以下内容添加到应用程序的settings.py中:

    模板上下文处理器=( “django.core.context_processors.debug”, “django.core.context_processors.i18n”)。

    这是有效的 移除 第三个默认处理器django.core.context_processor s.auth(不应该存在,因为对于appengine,我们不需要django的auth组件)。

    谢谢你,斯多兰,谢谢你的解决方案!希望其他人也能使用它。:)

    @ Nick ,我认为值得在本教程中加入关于上下文处理器的黄金部分。( http://code.google.com/appengine/articles/django.html )

    (问题的原始后续)

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

    调试=真

    但是当我切换到

    调试=错误

    @尼克·约翰逊,这是堆栈跟踪:

    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'