我在本地开发环境中没有这个问题,但我刚刚使用nginx + gunicorn部署了应用程序(第一次部署应用程序),每当我尝试发出请求时,我都会收到此回溯。
2012-01-21 22:24:36 [5712] [ERROR] Error handling request
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/gunicorn/workers/sync.py", line 96, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
self.load_middleware()
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 51, in load_middleware
raise exceptions.ImproperlyConfigured('Middleware module "%s" does not define a "%s" class' % (mw_module, mw_classname))
ImproperlyConfigured: Middleware module "django.middleware.csrf" does not define a "CsrfResponseMiddleware" class
以下是我的settings.py文件的一部分
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
任何人都可以指出我正确的方向吗?
答案 0 :(得分:4)
看起来您部署的服务器具有不同版本的Django(旧版本)。 Penthi也是正确的,CsrfResponseMiddleware
是为了向后兼容,应该删除。 https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#legacy-method
答案 1 :(得分:4)
在Django 1.4中,您应该删除“django.middleware.csrf.CsrfResponseMiddleware
”,因为它可能会导致安全问题。
此外,还有两件事要做。
{% csrf_token %}
标记。 RequestContext
代替Context
。答案 2 :(得分:1)
在Django 1.3中,我的中间件中只有django.middleware.csrf.CsrfViewMiddleware才能使CSRF保护工作