2012-07-23 1 views
21

自分のdjangoアプリケーションにフローを持っています。このアプリケーションでは、自分の処理後に自分のサーバーに戻ってくる別のサービス(PayPalなど)にユーザーをリダイレクトします。私のサーバ上の戻り点は、direct_to_templateを使ってレンダリングする単純なHTML成功ページです。免責事項directfinderでのCSRF保護

いくつかの奇妙な理由により、他のサーバーがPOST要求を送信するため、他のサーバーがCSRFトークンを返さないため、CSRFトークンが見つからないというエラーがユーザーに表示されます。

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

答えて

34

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

あなたの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'}) 
31

あなたは@csrf_exemptを使用することができますあなたがインポートする必要があるこれのトークンをexcemptのデコレータ

from django.views.decorators.csrf import csrf_exempt 

、あなたのビューの前@csrf_exemptを書く

これが機能する適切:)彼は彼自身を飾るない、direct_to_template機能に組み込まれて使用したいと

+3

することは、これは、全く質問に答えていませんviews –

+0

クラスベースのビューの 'dispatch'メソッドで' @method_decorator(csrf_exempt) 'を使うこともできます。 –