2012-03-07 20 views
12

は表示されませんHTMLの関連するスニペットは、テンプレートにあります:ジャンゴCSRFトークンがここ

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トークン単に表示されません、:ここで

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

は私のsettings.pyMIDDLEWARE_CLASSES宣言です原因:a。

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

答えて

21

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

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

ありがとうございます! – babonk

+1

非常に役に立ちました!私はカスタムテンプレートタグを持っていたので、 '@ register.simple_tag(takes_context = True)'を指定してから 'render_to_string( 'template.html'、{}、context_instance = context)'を返す必要がありました。 – osa

5

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

context.update(csrf(request)) 
+0

チップありがとう – babonk