Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

652
Visualizações
¿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á.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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!

over 4 years ago · Santiago Trujillo Relatório

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
over 4 years ago · Santiago Trujillo Relatório

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.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda