Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

645
Vistas
¿Cómo agregar correctamente django csrf_token para formar en javascript en línea?

He creado un elemento de formulario dinámicamente en javascript:

var selectform = document.createElement("form")

He agregado otros elementos de entrada y estos atributos para seleccionar el formulario:

 submitnselection.setAttribute('type',"submit"); submitnselection.setAttribute('value',"Submit"); submitnselection.setAttribute("name","submitnpage"); selectform.setAttribute("method", "post") selectform.setAttribute = ("action", "/test") "{% csrf_token %}";

En HTML, agregar la etiqueta de plantilla {% csrf_token %} funcionaría, pero en este caso de javascript obtuve el error 403 prohibido:

Falta el token CSRF o es incorrecto.

Encontré algunas soluciones, pero nada funcionó para mí, ¿hay alguna forma de agregar {% csrf_token %} para formar solo usando Django, Javascript y Jquery simple? También tenga en cuenta que este script está dentro de html, por lo que creo que la etiqueta de plantilla {% csrf_token %} funcionará.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto debería funcionar:

 var inputElem = document.createElement('input'); inputElem.type = 'hidden'; inputElem.name = 'csrfmiddlewaretoken'; inputElem.value = '{{ csrf_token }}'; selectform.appendChild(inputElem);

Verá, csrf_token no es más que una cadena que es el value de un elemento de entrada hidden de un formulario. ¡Eso es todo!

about 4 years ago · Santiago Trujillo Denunciar

0

Puede intentar agregar un campo de entrada al formulario:

 // declare an input field var input = document.createElement('input'); input.type = 'hidden'; input.name = 'csrfmiddlewaretoken'; input.value = '{% csrf_token %}'; // attach field to the form selectform.appendChild(input); // submit
about 4 years ago · Santiago Trujillo Denunciar

0

Si entiendo todo, debe enviar un token csrf pero no tiene ninguno para enviar al servidor desde javascript.

A partir del código de una plantilla de Django es muy fácil generar un token csrf con la etiqueta habitual de Django {% csrf_token %}, pero esto se debe a que la plantilla se procesa en el servidor para crear el HTML final que se enviará al navegador. .

Cuando está en Javascript, no puede generar un token csrf, por lo que creo que la mejor solución es crear una etiqueta invisible en la plantilla, probablemente una entrada oculta.

 <input id="token" type="hidden" value="{% csrf_token %}" ></input>

Y cuando en jQuery obtengo el valor con $('#token').attr('value'), tengo un ejemplo con un método jQuery POST:

 token = $('#token').attr('value'); $.post(url, { 'personId': personId, 'csrfmiddlewaretoken': token // This is the important thing }, function() {} );

No importa cómo lo haga, debe enviar el token con el nombre 'csrfmiddlewaretoken' y el valor del token junto con la otra información que desea enviar al servidor.

Estoy editando esto con una solución JS pura si la necesita. Sólo dilo.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda