2013-01-17 23 views
1

請考慮以下情形:頁面在<form>中使用{% csrf_token %}加載。稍後,此表單的提交(包括隱藏的csrf_token)將使用ajax(post)執行,無需重新加載頁面。
在服務器端,據我所知,令牌應該發回給客戶端並替換<form>中的令牌,因爲令牌可以根據其生命週期更新(順便說一句,當令牌被重新生成時)?
獲取令牌併發送響應我正在考慮使用django.middleware.csrf.get_token(),但在代碼中它似乎只是返回從客戶端發送的代碼。
那麼get_token()會返回最新的嗎?django.middleware.csrf.get_token()用法

回答

1

使用

var csrf_token = $(this).data('csrf'); // $(this) refers to your form in your html 

然後檢索您的CSRF令牌的JS:

$('#yoursubmitbutton').click(function() { 
$.ajax({ 
      url: url, 
      type: "POST", 
      dataType: "json", 
      data: { csrfmiddlewaretoken: csrf_token, other_data: other_data }, 
      success: function(data) { 
       if (data['success']=='true') { 
        // Handles success 
       } else { 
        // Handles failure failed. 
       } 

       // Any logic you want 
      }, 
      error: function() { 
            // Error handling 
      } 
     }) 
}); // click event 
+1

您好,感謝您的回答!但我想你誤解了我的問題:django.middleware.csrf.get_token()是否已經重新生成了令牌(如果它是重新生成的),或者不是。 – Acute