为什么Django显示这个错误:“禁止(403)CSRF验证失败。请求被中止。当我已经在表单中有{% csrf_token %}
时。在
templates/core/signup.html
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign up</button>
</form>
{% endblock %}
views.py
^{pr2}$
Tags:
在你的视图.py您需要在您的
render_to_response
中传递RequestContext
,以便实际运行上下文处理器。在新的渲染快捷方式(django 1.3+)将为您提供:
^{pr2}$对于
class-based view
:因为你已经从django.core.context_处理器.csrf发送给上下文管理器。检查表单HTML是否有这样的内容:
<input type='hidden' name='csrfmiddlewaretoken' value="jqhdwjavwjagjzbefjwdjqlkkop2j3ofje" />
要使csrf保护起作用,还需要一些其他的东西(查看docs):
浏览器必须接受来自服务器的cookies
确保你有django.middleware.csrf.CsrfViewMiddleware'作为中间件包含在设置.py(或者对要保护的特定视图使用装饰器csrf_protect())
相关问题 更多 >
编程相关推荐