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

对django的Http Delete请求返回301(永久移动),django,rest,Django,Rest,当我对django应用程序执行Http删除请求时。它直接返回301(永久移动)响应,并重定向我以获取相同url的请求。我猜Http PUT请求会像DELETE请求一样返回301。有没有办法用django处理删除请求?重定向是由以下设置引起的: 追加斜杠 默认值:True 当设置为True时,如果请求URL 与中的任何模式都不匹配 URLconf,它不会以 斜杠,HTTP重定向被发送到 附加了斜杠的相同URL。 请注意,重定向可能会导致任何错误 在POST请求中提交的数据 迷路了 确保您的服务器和

当我对django应用程序执行Http删除请求时。它直接返回301(永久移动)响应,并重定向我以获取相同url的请求。我猜Http PUT请求会像DELETE请求一样返回301。有没有办法用django处理删除请求?

重定向是由以下设置引起的:

追加斜杠

默认值:True

当设置为True时,如果请求URL 与中的任何模式都不匹配 URLconf,它不会以 斜杠,HTTP重定向被发送到 附加了斜杠的相同URL。 请注意,重定向可能会导致任何错误 在POST请求中提交的数据 迷路了

确保您的服务器和客户端与后面的斜杠一致


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

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

Django Rest重定向客户端以请求带有尾随斜杠的URL,而AngularJS的
$resource
确保其URL上没有尾随斜杠。本文对此进行了描述

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

因此解决方案很简单,因为Django REST团队已经考虑到了这一点:


(由于我想使用AngularJS和Django REST记录一些gotchas,所以我将其添加到了我的日志中)

另一个可能导致这种情况的原因是,当您的web服务器将
http
请求重定向到
https
时,您的前端客户端将请求发送到
http
。我就是这样。因此,请将客户端更改为直接调用https。

是否可能在url中缺少用于删除的尾随斜杠?能否确认是否正在加载相关视图?可能在视图中放置一个日志,以确认正在加载它。另外,这可能是您的web服务器而不是Django重定向请求吗?这就是问题所在。我的客户端是backbone.js,看起来backbone.js并没有将尾部斜杠放在模型URL上。因此,在urls.py中,我添加了另一个url配置,没有尾随斜杠,它成功了。该选项已在angularJS 1.30.beta6中为$resource组件配置。谢谢你,伙计,你救了我一天!
router = DefaultRouter(trailing_slash=False)