我的 django 应用程序中有一个流程,在该流程中我将用户重定向到另一个服务(例如 PayPal),该服务经过自己的处理后,将用户返回到我自己的服务器上。我的服务器上的返回点是一个简单的 HTML 成功页面,我使用 direct_to_template 呈现。
由于一些奇怪的原因,另一台服务器发送了一个 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
在你的观点之前
这将正常工作:)