13

テンプレート内の関連するHTMLのスニペットは次のとおりです。

    <form action="/submit_text/" method="post">
    {% csrf_token %}
    {% include "backbone/form_errors.html" %}
    {{form.as_p}}
    <input type="submit" value="Submit" />
    </form>

これが私のsettings.py MIDDLEWARE_CLASSES宣言です:

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

CSRFトークンが表示されないため、

禁止(403)CSRF検証に失敗しました。リクエストは中止されました。

4

2 に答える 2

22

コンテキストプロセッサを実際に実行するには、RequestContextを渡す必要があります。render_to_response

 from django.template import RequestContext

 context = {}
 return render_to_response('my_template.html',
                           context,
                           context_instance=RequestContext(request))

新しいrenderショートカット(django 1.3+)があなたに代わってそれを行います:

 from django.shortcuts import render

 context = {}
 return render(request, 'my_template.html', context)
于 2012-03-08T03:20:14.197 に答える
5

context_instance....チェックされた答えがありますが、私は書くことが本当に迷惑になることを指摘したいと思います。私はこれが便利だと思います...特にforms

context.update(csrf(request))
于 2012-03-08T05:49:10.220 に答える