3

当我request.set_cookie()process_view自定义中间件类中执行此操作时,我不断收到此异常。这是我的 settings.py 中的中间件类的顺序:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'website.middleware.UserLastActiveMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',

)
4

3 回答 3

3

你应该set_cookie()response对象调用。例子:

def process_response(self, request, response):
    ...
    response.set_cookie('user_agreement', user_agreement, domain='.mysite.com')
    return response
于 2013-07-03T06:44:47.353 回答
3

首先,当您在对请求的响应中设置 cookie 时,set_cookie()它​​是 的一种方法HttpResponse,而不是。HttpRequest

其次,你的中间件应该放在后面AuthenticationMiddleware,因为它可能与用户有关。

于 2013-07-03T06:47:32.613 回答
2

你可以看看这个问题:Django: WSGIRequest' object has no attribute 'user' on some pages?

当您不添加尾部斜杠时通常会出现此问题,因为然后重定向到包含尾部斜杠的 url

于 2013-07-03T06:45:06.397 回答