Django REST Framework 删除方法请求收到 Forbidden 403

Posted

技术标签:

【中文标题】Django REST Framework 删除方法请求收到 Forbidden 403【英文标题】:Django REST Framework Delete Method Request receives Forbidden 403 【发布时间】:2021-10-05 00:04:01 【问题描述】:

views.py

class DeviceView(viewsets.ModelViewSet):

serializer_class = DevicesSerializer
queryset = Devices.objects.all() 
permission_classes = [permissions.IsAuthenticated]

Axios 请求

    axios.delete(`api/devices/$data.id/`, , 
    headers: 'X-CSRFToken': csrftoken 
)
    .then((response) => 
        console.log(response);
    ).catch((error) => 
        console.log(error);
    );

当我在前端执行此请求时,我得到一个响应:“DELETE http://localhost:3000/api/devices/4/ 403 (Forbidden)”。其中 4 是属于我要删除的记录的 ID。

我目前在 Django 中使用会话身份验证,并且我已将我的 CSRF 令牌值传递到我的请求标头中。

当我在表单上使用 PUT 和 POST 等其他方法时,它们可以正常工作。但是,不是删除

收到此错误消息我做错了什么?

【问题讨论】:

只是为了确认您在 Django 开发服务器上遇到了这个问题? 检查问题出在哪里的一种方法是在此删除 url 上使用 curl 命令。如果可以,它可能与您的 ajax 调用有关,如果不是,则可能与您的 api 有关。 也许模型上的 delete.CASCADE 可能是问题所在。 【参考方案1】:

原来我只需要删除 Axios 请求中的空正文。

axios.delete(`api/devices/$data.id/`, 
    headers: 'X-CSRFToken': csrftoken 
)
    .then((response) => 
        console.log(response);
    ).catch((error) => 
        console.log(error);
    );

【讨论】:

以上是关于Django REST Framework 删除方法请求收到 Forbidden 403的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django Rest Framework 删除对象

Django REST Framework 删除方法请求收到 Forbidden 403

Django rest framework JWT ,删除 jwt 令牌

django-rest-framework 令牌认证和注销

如何:创建一个视图和序列化器,用于添加,编辑和删除具有外部关系的对象django rest framework

18-Django REST framework-使用Django开发REST 接口