2010-02-23 4 views
1

Je suis aux prises avec le jeton CSRF dans un simple formulaire POST dans Django. Le modèle génère la sortie suivante CSRF au lieu de sortir la valeur du jeton:Django génère un jeton CSRF en tant qu'objet au lieu de valeur

<input type='hidden' name='csrfmiddlewaretoken' value='{'csrf_token':django.utils.functional.__proxy__ object at 0x1255690>}' /> 

J'utilise {% csrf_token %} dans le modèle, comment puis-je résoudre ce problème? (J'utilise Django 1.2)

EDIT: le code de forme exacte est:

<form name="foo" action="url" method="POST"> 
    {% csrf_token %} 

    <select> 
     {% for key, account in accounts.items %} 
      <option value="{{ key }}">{{ account }}</option> 
     {% endfor %} 
    </select> 
<input type="submit">  
</form> 
+0

Veuillez montrer le fragment de modèle exact. –

+0

Salut Daniel, j'ai ajouté le formulaire, j'espère que cela aidera. Quand je fais {{crsf_token.csrf_token}} alors le jeton réel est affiché, mais sans le champ de saisie caché entier. – DrDee

Répondre

1

J'ai trouvé la cause: dans settings.py j'avais ajouté: django.middleware.csrf.CsrfViewMiddleware mais pas: django.middleware.csrf.CsrfResponseMiddleware.

Donc, ajoutez django.middleware.csrf.CsrfResponseMiddleware après django.middleware.csrf.CsrfViewMiddleware et django.middleware.common.CommonMiddleware et vous êtes prêt à partir.

+0

Je n'utilise que le viewMiddleware et ça marche bien. – yossi

Questions connexes