當我執行POST表單時,Django 1.2一直給我這個CSRF驗證錯誤。我 「認爲」 我已經做了所有的Django的1.2文檔,即所要求的東西,Django 1.2.4 CSRF驗證失敗
確保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裝飾器,即使這似乎並沒有工作。我沒有想法,我正要用我的筆記本電腦嗆自己。
你們能想到的任何事情嗎?
謝謝!
檢查瀏覽器中的HTML以確保csrf標記字段在此處。然後轉儲POST響應以檢查它回到視圖。 – Spacedman 2011-01-23 17:06:57