Django'WSGIRequest'对象没有属性'set_cookie'

时间:2013-07-03 06:36:05

标签: django django-middleware

当我在自定义中间件类的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',

)

3 个答案:

答案 0 :(得分:2)

您应该set_cookie()来自response对象。 例如:

def process_response(self, request, response):
    ...
    response.set_cookie('user_agreement', user_agreement, domain='.mysite.com')
    return response

答案 1 :(得分:2)

您可以查看以下问题:Django: WSGIRequest' object has no attribute 'user' on some pages?

当您不添加尾部斜杠时,通常会发生此问题,因为这会对包含尾部斜杠的网址进行重定向

答案 2 :(得分:2)

在您对请求的回复中设置Cookie时,首先使用set_cookie() is a method of HttpResponse,而不是HttpRequest

其次,您的中间件应该在AuthenticationMiddleware之后,因为可能与用户有关。