2011-08-02 14 views
13

¿Por qué no aparece el marcado para el campo de entrada oculto cuando uso {{ csrf_token }}?Django {{csrf_token}} está produciendo solo el valor del token, sin la marca de entrada oculta

He aquí un fragmento de mi plantilla:

<form action="." method="post"> 
{{ csrf_token }} 

Estoy esperando algo como esto a generarse:

<form action="." method="post"> 
<input type="hidden" name="csrfmiddlewaretoken" value="0c90dab91e22382cbaa5ef375f709167"> 

Pero en cambio, este es el HTML que se genera:

<form action="." method="post"> 
0c90dab91e22382cbaa5ef375f709167 

He hecho esto muchas veces y está funcionando bien en mis otros proyectos, pero d No sé lo que me perdí esta vez.

Mi archivo views.py se ve así:

from django.shortcuts import render_to_response 
from django.template import RequestContext 

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

Como se puede ver, estoy usando RequestContext. Mis clases de middleware se definen como esta en el archivo settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

Así que estoy usando django.middleware.csrf.CsrfViewMiddleware. Además, estoy en Django 1.3.0. ¿Alguna idea por ahí?

+3

no es '{% csrf_token%} '- como una etiqueta de plantilla, en lugar de generar' unicode (csrf_token) '? – phoku

+0

Gosh maldita sea. No puedo pensar o leer directamente a las 2 de la mañana. Estás absolutamente en lo correcto. Escríbalo como una respuesta y lo aceptaré. Muchas gracias;) –

Respuesta

28

Hay que utilizarlo como etiqueta {% csrf_token %} no como una variable pasada por su punto de vista {{csrf_token}}

5

que utilizar el siguiente en mis plantillas para resolver su problema:

<input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token }}' /> 
+0

en jinja {% csrf_token%} no funciona. – ccsakuweb

Cuestiones relacionadas