我有一個模板(index.html。它擴展base.html)包含一個表單與一個csrf_token極其有效。我使用JS/Ajax將數據發送到我的視圖。所以沒有問題。csrf令牌問題與多個模板
問題是,如果我複製/粘貼我的表單到另一個模板(例如:new.html這也擴展base.html)我得到:CSRF令牌丟失或不正確的錯誤。 (控制檯中的HTTP 403錯誤)
兩個模板都使用相同的JS函數。兩個模板中的表單完全相同。
有什麼建議嗎?
<form method="post" action="." enctype="multipart/form-data">
{% csrf_token %}
<a href="#" class="heart pull-right" onclick="return Favorite(this)" data="foobar">
<i class="fa fa-heart-o"></i>
</a>
</form>
這裏JS/Ajax的功能:
function Favorite(item) {
song_id = item.getAttribute("data"),
$.ajax({
type : "POST",
datatype: "json",
url: "/fav/",
data: {
'csrfmiddlewaretoken' : $('input[name=csrfmiddlewaretoken]').val(),
song_id : song_id
},
});
return false
順便提及,在index.html中的形式
這裏的形式(index.html中和new.html相同)是在一個div中。在new.html中,表單位於表格中。不知道它是否有幫助。
顯示'new.html'只是一個片段,你正在使用的形式。還有'JS'功能。 – 2014-11-02 18:12:25
你需要更多信息嗎? – 2014-11-02 19:22:43
首先檢查令牌是否被傳遞?在你的JS函數'alert'中,或者寫入'console.log'的時候,'$('input [name = csrfmiddlewaretoken]')。val()'例如'alert($('input [name = csrfmiddlewaretoken]')。val());' – 2014-11-02 20:27:15