Мне нужно сделать такие же ajax POST-вызовы в Django. Поэтому я использую метод, описанный в Django документах:Django ajax POST extend beforeSend метод, используемый для защиты CSRF
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
crossDomain: false,
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
Однако, когда я делаю AJAX звонков и хочу добавить какое-то действие для метода beforeSend (т.е. дисплей загрузчик изображения), он удаляет вышеуказанную функцию. Пример:
$.ajax({
url: "some_url",
type: "POST",
data: some_form.serialize(),
beforeSend: function() { some_element.showLoader();}
});
$.ajax({
url: "some_other_url",
type: "POST",
data: some_other_form.serialize(),
beforeSend: function() { some_other_element.showLoader();}
});
DRY важно, и я не хочу, чтобы поставить «showLoader) (» функции в ajaxSetup, потому что она может отличаться.