当我执行 POST 表单时,Django 1.2 始终给我这个 CSRF 验证错误。我“认为”我已经完成了 Django 1.2 文档中要求的所有事情,即,
确保 MIDDLEWARE_CLASSES 包含在“django.middleware.csrf.CsrfViewMiddleware”中
-
确保 {% csrf_token %}
<form action="/words/new/" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Enter" />
</form>
-
在我的响应中使用 RequestContext
def create(request):
if request.method == 'POST':
form = DefinitionForm(request.POST)
if form.is_valid():
form.save()
c = {}
return render_to_response('dict/thanks.html',c,
context_instance=RequestContext(request))
else:
form = DefinitionForm()
return render_to_response('dict/create_definition.html', {
'form' : form,
})
请注意,GET 操作在此函数中起作用。所以我认为我使用 render_to_response 是正确的。
我什至尝试加入 @csrf_protect 装饰器,但似乎也不起作用。我已经没有主意了,我快要被我的笔记本电脑窒息了。
大家能想到什么吗?
Thanks!
你没有遵循#3。这RequestContext
必须与显示表单的模板的渲染一起使用。感谢页面不需要它。
return render_to_response('dict/create_definition.html', {
'form' : form,
}, context_instance=RequestContext(request))
作为旁注,您应该使用PRG模式 http://en.wikipedia.org/wiki/Post/Redirect/Get而不是直接渲染感谢页面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)