我在process_response方法中有时会在自定义中间件中遇到此错误。我有中间件的下面的列表:'WSGIRequest'对象没有属性'会话'
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'application.middleware.LastCampaignSessionMiddleware'
]
所以会话中间件放在我的中间件之前。源代码中没有任何del request.session
表达式。 这是process_response方法:
def process_response(self, request, response):
if 'last_campaign_id' in request.session and request.session['last_campaign_id']:
if request.COOKIES['last_campaign_id'] != request.session['last_campaign_id']:
response.set_cookie('last_campaign_id', request.session['last_campaign_id'])
return response
不知道为什么它会发生在所有。
编辑2012年3月8日12-30
它看起来像浏览器请求图标:
[03/Aug/2012 10:26:42] "GET /favicon.ico/ HTTP/1.1" 404 6701
是否有在Django没有默认的行为来解决这个网址?因为我没有明确指定应该处理这个请求的视图。我在页面源代码中不使用favicon。所以我想这是浏览器谁要求/favicon.ico。我想在404错误的情况下,HttpRequest将无法正确构造,难怪我在请求对象中没有会话。但这只是我的假设。
此外,如果有必要,我正在使用django dev服务器,同时得到此错误。
EDIT 13-00
我已经解决了这个问题,但图标仍然得到错误。为什么会话可能不存在请求?
那么问题是什么?如果您遇到错误,可以将日志添加到此问题中? – StefanNch 2012-08-03 09:42:15
哦,它是在标题中:'WSGIRequest'对象没有属性'会话'。每次尝试获取我网站的任何网址时发生。它发生在application.middleware.LastCampaignSessionMiddleware的process_response方法中。 – sunprophit 2012-08-03 09:44:19