La fonction {{csrf_token}} de Django ne génère que la valeur du jeton, sans le balisage d'entrée masqué

Pourquoi n'est-ce pas le balisage pour le champ caché montrant quand j'utilise {{ csrf_token }}?

Voici un extrait de mon template:

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

Je m'attends à quelque chose comme ce qui doit être généré:

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

Mais au lieu de cela, c'est le code HTML qui est généré:

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

Je l'ai fait plusieurs fois et ça fonctionne très bien dans mes autres projets, mais je ne sais pas ce que j'ai raté ce moment.

Mon views.py fichier ressemble à ceci:

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))

Comme vous pouvez le voir, je suis en utilisant RequestContext. Mon middleware classes sont définies comme suit dans le settings.py fichier:

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',
)

Je suis donc à l'aide de django.middleware.csrf.CsrfViewMiddleware. Aussi, je suis sur Django 1.3.0. Des idées?

source d'informationauteur Mike M. Lin

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *