【发布时间】:2020-07-09 13:57:21
【问题描述】:
使用 Django==2.2.11,djangorestframework==3.8.1
感谢您的阅读!
我使用的有冲突的网址:
urlpatterns = [
. . .
url(
r'^some-path$',
views.MyViewSet.as_view({'get': 'list'})
),
url(
r'^some-path$',
views.MyViewSet.as_view({'post': 'create'}),
),
...
]
我正在使用邮递员测试每个路径,这两个url之间似乎存在冲突。
将此 url 与 GET 一起使用会起作用:
http://my_domain.com:8000/some-path
但是 POST 使用相同的 url(和有效的负载)会抛出错误:
WARNING 2020-03-28 19:13:57,288 "POST /some-path HTTP/1.1" 405 41
然后回应:
{"detail": "Method \"POST\" not allowed."}
我的 url 按顺序交换,然后 POST 会起作用,而 GET 会抛出类似的错误。
我看了这篇文章: 405 POST method not allowed
我很乐意添加视图代码 - 但我很确定问题出在 url 上,因为它们在交换订单时都可以工作。 将根据要求添加。
谢谢!
编辑:我混淆了网址 - 添加了 retrieve 而不是 list 抱歉!
【问题讨论】:
-
我不明白在您的情况下 URL 冲突将如何发生,因为
POST /some-path和GET /some-path/<pk>是不同的。 (仅供参考:我试图重现这个问题,但我不能) -
@ArakkalAbu 我错误地为 GET 发布了错误的 url - 抱歉我解决了上面的问题,PTAL
标签: django url django-rest-framework django-views url-routing