对django的Http删除请求返回301(永久移动)

yil*_*yin 26 django rest

当我对django应用程序执行Http DELETE请求时.它直接返回301(永久移动)响应,并将我重定向到相同网址的GET请求.我猜Http PUT请求会像DELETE请求一样返回301.有没有办法用django处理DELETE请求?

Udi*_*Udi 47

重定向是由APPEND_SLASH设置引起的:

APPEND_SLASH

默认值:True

设置为True时,如果请求URL与URLconf中的任何模式都不匹配,并且不以斜杠结尾,则会向相同的URL发出HTTP重定向,并附加斜杠.请注意,重定向可能导致POST请求中提交的任何数据丢失.

确保您的服务器和客户端与尾部斜杠一致.

如果您的项目根本不需要尾部斜杠(即,它是一个没有尾部斜杠的api),您可以禁用它.否则,请确保您的urlconf接受没有尾部斜杠的路径.


Uli*_*ses 5

我在使用AngularJs和Django REST时遇到了这个问题。

Django Rest正在重定向客户端,以便使用尾部斜杠请求URL,而AngularJS' $resource确保其URL上没有尾部破折号。在本期中对此进行了描述

在同一链接上,您将看到使用更灵活的$http服务而不是的建议$resource。但是...我真的很想使用$resource(更少的代码)。

因此解决方案很简单,因为Django REST团队最近对此做了说明

router = DefaultRouter(trailing_slash=False)
Run Code Online (Sandbox Code Playgroud)

http://django-rest-framework.org/api-guide/routers.html

(因为我想使用AngularJS和Django REST记录一些陷阱,所以我将其添加到我的博客中