2011-08-08 34 views
0

所有頁面均從基本模板擴展而來。 基本模板中有一個表單,表單具有CSRF標籤。在主頁上提交表單時,一切正常。但是對於所有其他頁面(也從相同的基本模板擴展而來),提交失敗,並顯示以下錯誤: 禁止(403) CSRF驗證失敗。請求中止。Django CSRF在擴展頁面中使用時失敗

使用Firebug檢查頁面,缺少包含CSRF標記的隱藏輸入字段。

+0

我想你已經像Srikar在第一個答案時說過的那樣(或者它甚至不能在基本模板上工作),那麼你能告訴我們更多關於擴展頁面嗎?也許有些代碼?我一直在使用基本模板和擴展它的頁面的表單,並且從來沒有遇到過您的問題(並且沒有特別設置) –

回答

0

你需要做到這一點 -

  1. 在設置修改 - MIDDLEWARE_CLASSES = ('django.middleware.csrf.CsrfViewMiddleware')
  2. 下一步以任何形式在你的模板,把這個 - <form method="post" class="login_form" name="frmlogin">{% csrf_token %}

這將解決您的問題...

+0

我已經擁有了這兩者。 {%csrf_token%}標記位於基本模板中。這僅適用於主頁而不適用於其他頁面,全部從基本模板擴展而來。 –

+0

嘗試在派生的模板中放入'{%csrf_token%}'以確保問題出現,然後我們可以看到如何處理它... –