为什么Django admin登录给我403 CSRF错误?

tho*_*len 8 python django csrf django-csrf

我正在运行Django 1.2.2,当我尝试登录Django管理员时出现以下错误:

禁止(403)CSRF验证失败.请求中止.

失败的原因:

没有CSRF或会话cookie.

**我没有对准系统管理员进行任何定制,当我检查源时,表格中有一个CSRF令牌,我认为是正确的位置.

当我查看正在发送的实际请求时,会发送一个csrf令牌,但Django仍然说CSRF验证失败.

谁能指出我正确的方向?为什么会这样?

bzx*_*bzx 6

我在Django 1.2.1 FINAL上遇到了同样的问题.由于我知道我们的生产站点上的Django永远不会从1.0更新(出于各种原因),我找到了一个解决方法,我将其实现到我的settings.py开发版本中,使生产settings.py保持不变.

使用以下代码在应用程序目录中创建middleware.py文件:

class disableCSRF:
    def process_request(self, request):
        setattr(request, '_dont_enforce_csrf_checks', True)
        return None
Run Code Online (Sandbox Code Playgroud)

然后在您的开发版本的settings.py中,将其插入MIDDLEWARE_CLASSES:

'your_app_name.middleware.disableCSRF',
Run Code Online (Sandbox Code Playgroud)

也许不是最安全的解决方案,但我们的Django站点是严格内部的,因此对任何类型的恶意行为都存在最小风险.这个解决方案很简单,不涉及对模板/视图的更改,并且它可以立即工作(与我尝试过的其他方式不同).

希望有类似情况的人会觉得这很有用.

感谢John McCollum,我发现了这个网站.


Ste*_*lim 5

1)你有'django.middleware.csrf.CsrfViewMiddleware'你的settings.MIDDLEWARE_CLASSES

2)你确定你一直在1.2.2吗?那只是昨晚才出来的......