Saltar al contenido

Token CSRF falta o es incorrecto

Solución:

Actualización: esta respuesta es de 2011. CSRF es fácil hoy.

En estos días debería utilizar el render función de atajo return render(request, 'template.html') que usa RequestContext automáticamente, por lo que el siguiente consejo está desactualizado por 8 años.

  1. Usar render https://docs.djangoproject.com/en/2.2/topics/http/shortcuts/
  2. Agregue el middleware CSRF https://docs.djangoproject.com/en/2.2/ref/csrf/
  3. Utilizar el {% csrf_token %} etiqueta de plantilla
  4. Confirme que ve el valor del token CSRF que se está generando y enviado en su solicitud de formulario

Respuesta original

Supongo que tiene la etiqueta en la plantilla pero no muestra nada (¿o quiso decir que confirmó en el HTML real que se está generando un token CSRF?)

Cualquiera de los dos usos RequestContext en lugar de un diccionario

render_to_response("foo.html", RequestContext(request, {}))

O asegúrate de tener django.core.context_processors.csrf en tus CONTEXT_PROCESSORS configuración.

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

O agregue el token a su contexto manualmente

Solo agregue esto a sus vistas

return render_to_response("register.html", {'form': form, }, context_instance = RequestContext(request))

¡¡Funcionará!!

Intenta usar hacer en lugar de render_to_response:

from django.shortcuts import render

render(request, "foo.html", {})

Django: ¿cuál es la diferencia entre render (), render_to_response () y direct_to_template ()?

Como se indica en el enlace anterior, se introdujo en Django 1.3 y usa automáticamente RequestContext

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *