📅  最后修改于: 2023-12-03 14:40:16.217000             🧑  作者: Mango
在 Django 中,Cross-Site Request Forgery (CSRF) 是一个安全机制,旨在防止恶意网站向您的网站发出请求,以便执行未经授权的操作。但是,在某些情况下,您可能需要将某些视图从 CSRF 保护中豁免掉。本文将介绍如何在 Django 中实现 CSRF 令牌豁免。
CSRF 保护是通过在表单中包含 CSRF 令牌来实现的。该令牌是一个随机生成的字符串,需要包含在表单数据中以供 Django 验证。如果该令牌不存在或无效,则 Django 会拒绝该请求。
对于某些视图,您可能希望豁免 CSRF 保护。例如,如果您正在编写一个 API,其中的请求是由另一个应用程序生成的,则需要豁免 CSRF 保护。要进行此操作,请按照以下步骤操作:
在视图文件顶部导入 csrf_exempt
装饰器:
from django.views.decorators.csrf import csrf_exempt
要将视图豁免 CSRF 保护,请使用 csrf_exempt
装饰器。例如:
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
@csrf_exempt
def my_view(request):
if request.method == 'POST':
# 处理 POST 请求
return HttpResponse('POST 请求已处理')
else:
# 处理 GET 请求
return HttpResponse('GET 请求已处理')
在上面的代码中,csrf_exempt
装饰器应用于 my_view
视图,这样就可以豁免 CSRF 保护。
要确认 CSRF 保护已被豁免,请查看视图源代码。如果该视图使用了 csrf_exempt
装饰器,则可以看到以下内容:
@csrf_exempt
def my_view(request):
CSRF 保护是 Django 用于防止恶意请求的一种重要机制。但是,在某些情况下,您可能需要将某些视图从 CSRF 保护中豁免掉。您可以使用 csrf_exempt
装饰器来实现这一点。