2013-10-27 187 views
1

我遇到了下面的問題,使用JQuery表單驗證和模態內的Django,即使我將csrf標記包含在HTML模板中。如果我提交表單而未使用JQuery進行驗證,則工作正常。Django csrf失敗,jQuery驗證

Forbidden (403) 
CSRF verification failed. Request aborted. 

在服務器端我使用Django表單驗證,沒有什麼特別的。

預先感謝您:)

這裏是我的代碼:

HTML

<form class="form-inline" id="add-subtitle-modal" action="/add_subtitle/" role="form" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 

<div class="form-group"> 
     {{object.description}} 
</div> 

... 

<button class="btn btn-danger" type="submit">save</button> 

JS

$('#add-subtitle-modal').validate({ 
     rules: { 
... 
} 

etc 

     submitHandler: function(form) { 
      var $form = $(form); 
      var $inputs = $form.find("input, select, button, textarea"); 
      $inputs.prop("disabled", true); 

      //let the backend to manage submiting 

      $form.submit(); 
     } 
+0

對不起。我盲目地認爲有一個阿賈克斯參與,我的壞。關於你的問題,你可以檢查,如果csrf標記與所有POST輸入一起發送? – mariodev

+0

我該怎麼做?因爲服務器禁止它,所以我不能打印request.body。在視圖中呈現它的csrf標記。 :( – jabez

+0

你可以簡單地打開chrome dev控制檯,看看發送了什麼數據.. – mariodev

回答

1

這是我的錯誤。在提交之前將輸入設置爲無效時,csrf也被設置爲禁用。因此,我認爲它沒有提交給服務器。我認爲這是問題,因爲我修改了哪些字段變爲禁用後會起作用。