当我向 django 应用程序发出 Http DELETE 请求时。它直接返回 301(永久移动)响应并将我重定向到相同 url 的 GET 请求。我猜测 Http PUT 请求会像 DELETE 请求一样返回 301。有没有办法用django处理DELETE请求?
重定向是由 APPEND_SLASH 设置引起的:
APPEND_SLASH
默认:真
设置为True时,如果请求URL 与中的任何模式都不匹配 URLconf 并且它不以 斜杠,HTTP 重定向被发送到 附加斜杠的相同 URL。 请注意,重定向可能会导致任何 POST 请求中提交的数据 迷失了。
确保您的服务器和客户端尾部斜杠一致。
如果您的项目根本不需要尾部斜杠(即,它是一个没有尾部斜杠的 api),您可以禁用它。 否则,请确保您的 urlconf 接受不带尾部斜杠的路径。
我在使用 AngularJs 和 Django REST 时遇到了这个问题。
Django Rest 正在重定向客户端,以便请求带有尾部斜杠的 URL,而 AngularJS 的
$resource
确保其 URL 上没有尾部破折号。这在这个issue中有描述
在同一链接上,您将看到使用更灵活的
$http
服务而不是 $resource
的建议。但是...我真的很想使用$resource
(更少的代码)。
所以解决方案很简单,因为 Django REST 团队最近已经解决了这个问题:
router = DefaultRouter(trailing_slash=False)
(我已将此添加到我的
http
请求重定向到
https
并且您的前端客户端正在向
http
发送请求时。我就是这种情况。所以改客户端直接调用
https
。
向同一 URL 发出 HTTP 重定向,并附加斜杠。
确保您的服务器和客户端尾部斜杠一致。
于 2011 年 6 月 13 日 21:17 回复