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

Django REST+React Native发Delete请求报CSRF cookie not set错误

Django删除图片接口403 CSRF校验失败解决办法

报错核心是Django默认的CSRF防护机制对DELETE请求触发了校验,你的文件删除接口已经做了CSRF豁免处理,而新增的图片删除接口没有配置,所以出现一边正常一边403的情况。

方案1:给图片视图添加CSRF豁免装饰器(适配你当前的函数视图写法)

直接在视图函数上挂载csrf_exempt装饰器即可关闭该接口的CSRF校验,适配React Native前后端分离场景:

# 导入csrf_exempt装饰器
from django.views.decorators.csrf import csrf_exempt
from .models import Uploads
from django.http import HttpResponse

@csrf_exempt # 新增这一行即可
def UploadsDetails(request,pk):
    try:
        image=Uploads.objects.get(pk=pk)
    except Uploads.DoesNotExist:
        return HttpResponse(status=404)
    if request.method =='DELETE':
        image.delete()
        return HttpResponse(status=204)

方案2:改用DRF标准接口写法(你项目已经用到Django REST,更推荐)

用DRF提供的api_view装饰器,默认自动关闭CSRF校验,同时适配REST接口的响应规范:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Uploads

@api_view(['DELETE'])
def UploadsDetails(request,pk):
    try:
        image = Uploads.objects.get(pk=pk)
    except Uploads.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)
    image.delete()
    return Response(status=status.HTTP_204_NO_CONTENT)

验证说明

你可以核对下FileDetails视图的代码,一定是已经加了@csrf_exempt装饰器或者用了DRF的api_view装饰器,所以删除文件不会触发CSRF校验错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:48:03