2017-01-11 15 views
0

でCSRFの新しいバージョンは、私はチュートリアルに従い、この行ではTypeErrorを取得していますどのようなものです:ジャンゴ1.10

c.update(csrf(request)) 

これは完全なビューである

from django.shortcuts import render 
from django.views.decorators import csrf 

def index(request): 
    c = {} #dictionary called c 
    c.update(csrf(request)) 
    return render(request, 'login/index.html', c) 

私がやっています変更された古いバージョンcsrfを間違ってインポートしましたか?私はDjangoの最新バージョンを実行しています。

+0

あなたは完全なエラーとは何ですか? – Sayse

答えて

3

TypeErrorは、コンテキストプロセッサではなくcsrfデコレータをインポートしたためです。そのはず。

from django.core.context_processors import csrf 

しかし、あなたはrenderショートカットを使用する場合、手動でCSRFトークンを含める必要はありません。 csrfトークンを含む要求コンテキストでテンプレートを自動的にレンダリングします。

def index(request): 
    c = {} # dictionary called c 
    return render(request, 'login/index.html', c) 

renderショートカットはDjangoの1.3で導入されましたので、(おそらくRequestContextrender_to_responseを使用する方が簡単であってもジャンゴ1.3以前)年間のビューでcsrf(request)を呼び出す必要がなかったです。残念ながら、this exampleはDjango 1.8までのドキュメントに残っていたので、はるかに一般的です。

関連する問題