Dlaczego znacznik ukrytego pola wejściowego nie wyświetla się, gdy używam {{ csrf_token }}
?Django {{csrf_token}} wyprowadza tylko wartość tokenu, bez ukrytego znacznika wejściowego
Oto urywek z mojego szablonu:
<form action="." method="post">
{{ csrf_token }}
ja spodziewałem się czegoś takiego być generowane:
<form action="." method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="0c90dab91e22382cbaa5ef375f709167">
ale zamiast tego, to jest HTML, który jest generowany:
<form action="." method="post">
0c90dab91e22382cbaa5ef375f709167
Zrobiłem to wiele razy i działa dobrze w moich innych projektach, ale ja nie wiem, co przegapiłem tym razem.
Mój plik views.py wygląda następująco:
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))
Jak widać używam RequestContext. Moje klasy middleware są zdefiniowane jak to w pliku 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',
)
Więc używam django.middleware.csrf.CsrfViewMiddleware. Ponadto jestem na Django 1.3.0. Jakieś pomysły?
nie jest to „{% csrf_token%} '- jako tag szablonu, zamiast wyprowadzania' unicode (csrf_token) '? – phoku
Chrzanij to. Nie mogę myśleć ani czytać od razu o drugiej nad ranem. Masz całkowitą rację. Zapisz to jako odpowiedź, a ja to zaakceptuję. Wielkie dzięki;) –