17

を使用すると、非表示の入力フィールドのマークアップが表示されないのはなぜ{{ csrf_token }}ですか?

これが私のテンプレートのスニペットです:

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

私はこのようなものが生成されることを期待しています:

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

代わりに、生成される HTML は次のとおりです。

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

私はこれを何度も行っており、他のプロジェクトではうまく機能していますが、今回は何が欠けていたのかわかりません。

私の views.py ファイルは次のようになります。

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

ご覧のとおり、RequestContext を使用しています。私のミドルウェア クラスは、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',
)

だから私はdjango.middleware.csrf.CsrfViewMiddlewareを使用しています。また、私は Django 1.3.0 を使用しています。そこに何かアイデアはありますか?

4

2 に答える 2

47

{% csrf_token %}ビューによって渡される変数としてではなく、タグとして使用する必要があります{{csrf_token}}

于 2011-08-02T09:43:44.107 に答える
9

私はあなたの問題を解決するために私のテンプレートで次を使用します:

<input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token }}' />
于 2011-08-02T09:30:12.597 に答える