このエラーは、process_responseメソッドのカスタムミドルウェアで時々発生します。私は次のミドルウェアのリストを持っています:
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
なぜそれが起こるのかわからない。
編集03-08-201212-30
ブラウザがファビコンを要求しているようです。
[03/Aug/2012 10:26:42] "GET /favicon.ico/ HTTP/1.1" 404 6701
このURLを解決するためのdjangoのデフォルトの動作はありませんか?このリクエストを処理するビューを明示的に指定しなかったためです。また、ページのソースコードではファビコンを使用していません。つまり、/favicon.icoをリクエストするのはブラウザだと思います。404エラーの場合、HttpRequestが適切に構築されないので、リクエストオブジェクトにセッションがないのも不思議ではありません。しかし、それは私の仮定にすぎません。
また、必要に応じて、このエラーが発生しているときにdjango開発サーバーを使用しています。
13-00を編集
ファビコンでこの問題を修正しましたが、それでもエラーが発生します。なぜセッションがリクエストに存在しないのですか?