You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django如何针对指定POST接口跳过CSRF token校验且不全局禁用CSRF

单视图关闭CSRF校验方案

Django提供了单独标记视图免CSRF校验的装饰器,不会影响全局其他路由和后台管理页的CSRF校验逻辑,完全适配你的需求。

第一步:导入装饰器

在视图文件头部引入csrf_exempt装饰器:

from django.views.decorators.csrf import csrf_exempt

第二步:给目标函数视图加装饰器

直接在你编写的saveDataToDatabase函数上添加装饰器标记即可,修改后的完整代码如下:

from django.views.decorators.csrf import csrf_exempt
import json
from django.http import HttpResponseServerError

@csrf_exempt
def saveDataToDatabase(request):
    if request.method == 'POST':
        json_data = json.loads(request.body) 
        try:
            data = json_data['data']
            # 此处添加你的数据校验、落库逻辑
        except KeyError:
            # 注意原代码缺少return,需要补充返回才能正确抛出错误响应
            return HttpResponseServerError("Malformed data!")

如果你后续使用Django REST Framework类视图,可按以下方式处理

类视图不能直接加装饰器,需要用method_decorator绑定到类的dispatch方法:

from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
from rest_framework.views import APIView
from rest_framework.response import Response

@method_decorator(csrf_exempt, name='dispatch')
class FormSubmitView(APIView):
    def post(self, request):
        data = request.data.get('data')
        # 业务逻辑处理
        return Response({"status": "success"})

注意事项

  • 该接口面向未登录用户开放,建议添加接口频次限制规则,避免被恶意刷量提交垃圾数据
  • 所有用户提交的字段需要做严格的格式校验,比如手机号格式校验、敏感词过滤等,避免恶意数据入库

内容的提问来源于stack exchange,提问作者ProgNow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:06:04