Djangoアプリケーションにフローがあり、そこでユーザーを別のサービス(Paypalなど)にリダイレクトします。このサービスは、独自の処理の後、ユーザーを自分のサーバーに戻します。私のサーバーは、direct_to_templateを使用してレンダリングする単純なHTML成功ページです。
いくつかの奇妙な理由で、他のサーバーはPOSTリクエストを送信します。したがって、他のサーバーはCSRFトークンを返送しないため、CSRFトークンが見つからないというエラーが表示されます。
CSRFトークンからdirect_to_templateビューを除外するにはどうすればよいですか?
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'})
@csrf_exempt
デコレータを使用して、インポートする必要があるcsrfトークンを免除できます
from Django.views.decorators.csrf import csrf_exempt
次に、ビューの前に@csrf_exempt
と書きます
これは適切に動作します:)