Csrftoken没有定义



我按照文档的建议使用以下代码:

function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$("#formTabla").submit(function(event){
event.preventDefault();
var formData = new FormData(this);
$.ajax({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
url : "{% url 'submit' %}",
type: "POST",
processData: false,
contentType: false,
data: {
"checkboxes": formData,
"datos": todosDatos
},
success: function (respuesta){
}
});
});

我得到错误:

"Uncaught ReferenceError: csrftoken is not defined".
我知道为什么会这样,但我不知道如何解决它。我应该如何以及在哪里定义crosstoken ?

你可以使用ajaxSend()

$(document).ajaxSend(function(event, xhr, settings){
if (!csrfSafeMethod(settings.type)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});

变量没有在任何地方定义,首先您需要获得csrf_token:

import Cookies from 'cookies-js'
let csrftoken  = Cookies.get('csrftoken')

然后在请求头中设置变量。

最新更新