Estoy usando el siguiente código según lo recomendado por la documentación:
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){ } }); });Estoy recibiendo el error:
"Uncaught ReferenceError: csrftoken is not defined".Entiendo por qué sucede esto, pero no tengo idea de cómo resolverlo. ¿Cómo y dónde se supone que debo definir crsftoken?
Puedes usar ajaxSend() para esto
$(document).ajaxSend(function(event, xhr, settings){ if (!csrfSafeMethod(settings.type)) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } });la variable no está definida en ninguna parte, primero debe obtener csrf_token:
import Cookies from 'cookies-js' let csrftoken = Cookies.get('csrftoken')luego configure la variable en el encabezado de la solicitud.