43

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

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

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

4

2 に答える 2

71

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'})
于 2012-07-23T10:32:12.387 に答える
65

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

from django.views.decorators.csrf import csrf_exempt

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

これは正しく動作します:)

于 2013-01-18T08:00:19.527 に答える