web-dev-qa-db-ja.com

direct_to_templateでCSRF保護を免除する方法

Djangoアプリケーションにフローがあり、そこでユーザーを別のサービス(Paypalなど)にリダイレクトします。このサービスは、独自の処理の後、ユーザーを自分のサーバーに戻します。私のサーバーは、direct_to_templateを使用してレンダリングする単純なHTML成功ページです。

いくつかの奇妙な理由で、他のサーバーはPOSTリクエストを送信します。したがって、他のサーバーはCSRFトークンを返送しないため、CSRFトークンが見つからないというエラーが表示されます。

CSRFトークンからdirect_to_templateビューを除外するにはどうすればよいですか?

30
sharjeel

csrf_exempt デコレータを使用して、特定のビューのCSRF保護を無効にできます。

あなたのURLパターンは次のとおりです:

('^my_page/$', direct_to_template, {'template': 'my_page.html'})

次のインポートをurls.pyに追加します。

from Django.views.decorators.csrf import csrf_exempt

次に、URLパターンを次のように変更します。

('^my_page/$', csrf_exempt(direct_to_template), {'template': 'my_page.html'})
55
Alasdair

@csrf_exemptデコレータを使用して、インポートする必要があるcsrfトークンを免除できます

from Django.views.decorators.csrf import csrf_exempt

次に、ビューの前に@csrf_exemptと書きます

これは適切に動作します:)

49
Neeraj Sharma