missing incorrect django csrf django-csrf

django - csrf token missing or incorrect.



Django-{% csrf_token%} se usó en una plantilla, pero el contexto no proporcionó el valor (1)

Su index.html se representa sin RequestContext . Prueba esto:

def index(request): return render_to_response(''index.html'', context_instance=RequestContext(request))

También te recomiendo que uses un acceso directo más conveniente:

from django.shortcuts import render def index(request): return render(''index.html'')

De documentos:

render () es lo mismo que una llamada a render_to_response () con un argumento context_instance que fuerza el uso de un RequestContext.

EDITAR :

Gracias @nerdwaller por mencionar, las versiones más nuevas ahora necesitan:

render(request, ''index.html'', {params});

Soy nuevo en Django y todavía estoy tratando de entender sus características. He creado un proyecto muy simple con Django 1.4.2 que tiene una página de índice con forma simple donde ingresas algo y una página de resultados donde se muestra tu entrada después del envío (el código está debajo).

Después del envío, recibo el error 403 y el siguiente mensaje:

Se utilizó {% csrf_token%} en una plantilla, pero el contexto no proporcionó el valor. Esto generalmente es causado por no usar RequestContext. warnings.warn ("A {% csrf_token%} se usó en una plantilla, pero el contexto no proporcionó el valor. Esto generalmente se produce al no usar RequestContext").

index.html

<!DOCTYPE html> <head> <title>Index page</title> </head> <body> <div id="header">Welcome to index page</div> <div id="content"> <p>Enter your name</p> <form action="/result/" method="post" accept-charset="utf-8">{% csrf_token %} <input type="text" name="answer"> <input type="submit" value="Send!"> </form> </div> </body>

result.html

<!DOCTYPE html> <head> <title>Result page</title> </head> <body> <div id="header">Here is the result</div> <div id="content"> <p>Your name is: {{ answer }}</p> </div> </body>

views.py

from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext def index(request): return render_to_response(''index.html'') def result(request): p = request.POST[''answer''] return render_to_response(''result.html'', {''answer'': p}, context_instance=RequestContext(request))

He investigado la documentación y varios ejemplos en Internet, pero no entiendo qué estoy haciendo mal. Si deshabilito django.middleware.csrf.CsrfViewMiddleware en settings.py , obtengo exactamente lo que quiero, pero esa no es la respuesta que estoy buscando.

Agradezco la ayuda de los ninjas de Django más experimentados :-)