ミドルウェアの応答オブジェクトを変更する必要があるため、「myproject.common.middlware.ResponseMiddleware」を追加しました
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware', # order matters don't move
'django.middleware.gzip.GZipMiddleware', # order matters don't move
'django.middleware.locale.LocaleMiddleware', # order matters don't move
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'myproject.common.middleware.ResponseMiddleware',
)
ただし、私の ResponseMiddleware には、以下のコードがあります。
class ResponseMiddleware(object):
def process_response(self, request, response):
if 'status_code' not in response:
response['status_code'] = 200
return response
ただし、response.status_code は、django の CommonMiddleware などの他のミドルウェアにはありません。私はDjango 1.4を使用しており、ドキュメントから、process_responseの順序はMIDDLEWARE_CLASSESで定義された順序の逆順です。だから私は私のものを一番下に置きました。
そして私は得る
AttributeError: 'dict' オブジェクトには、他のミドルウェアからの属性 'status_code' がありません。
(*** これは 、django 共通ミドルウェアで WebSocket がエラーを生成することに関連しています)