当我执行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装饰器甚至那似乎没有用。我没有想法,我就要用笔记本电脑掐自己了。
你们能想到的任何事情?
谢谢!
答案 0 :(得分:7)
你没有关注#3。 RequestContext
必须与显示表单的模板的呈现一起使用。谢谢页面没有必要。
return render_to_response('dict/create_definition.html', {
'form' : form,
}, context_instance=RequestContext(request))
作为旁注,您应该使用PRG pattern而不是直接呈现感谢页。