significa que missing incorrect framework forbidden failed python django django-forms csrf

python - que - django csrf token



El token CSRF falta o es incorrecto (7)

Principiante en Django aquí, he estado tratando de arreglar esto por mucho tiempo. Tengo ''django.middleware.csrf.CsrfViewMiddleware'' en mis clases de middleware y tengo el token en mi formulario de publicación.

Aquí está mi código, ¿qué estoy haciendo mal?

from django.contrib.auth.forms import UserCreationForm from django.shortcuts import render_to_response from django.http import HttpResponseRedirect from chartsey.authentication.forms import RegistrationForm from django.template import RequestContext from django.core.context_processors import csrf def register(request): if request.method == ''POST'': c = RequestContext(request.POST, {}) form = RegistrationForm(c) if form.is_valid(): new_user = form.save() return HttpResponseRedirect("/") else: form = RegistrationForm() return render_to_response("register.html", {''form'': form, }, )

Aquí está mi plantilla:

{% block content %} <h1>Register</h1> <form action="" method="POST"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit"> </form> {% endblock %}



La adición de RequestContext es la clave cuando se usa render_to_response como lo mencionaron @Yuji ''Tomita'' Tomita y @Njogu Mbau. Sin embargo, lo que inicialmente me echó de menos cuando estaba luchando con este problema fue que tuve que agregar RequestContext a la función en views.py que inicialmente carga la plantilla y a la función en views.py que maneja el envío desde la plantilla.

Además, solo como referencia, aquí hay otros enlaces que tratan este mismo problema.


Lo que funcionó para mí fue comentar la siguiente línea desde mi settings.py

''django.middleware.csrf.CsrfViewMiddleware''


Si no está utilizando CsrfViewMiddleware, entonces debe usar csrf_protect en cualquier vista que use la etiqueta de plantilla csrf_token, así como aquellas que acepten los datos POST.


Solo agrega esto a tus vistas

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

¡¡Funcionará!!



También obtuve este error aleatoriamente en algunas páginas después de instalar django-livereload-server. Desinstalar django-livereload-server hizo el truco.