django - Django url 冲突
问题描述
使用 Django==2.2.11,djangorestframework==3.8.1
感谢您的阅读!
我正在使用的 url 有冲突:
urlpatterns = [
. . .
url(
r'^some-path$',
views.MyViewSet.as_view({'get': 'list'})
),
url(
r'^some-path$',
views.MyViewSet.as_view({'post': 'create'}),
),
...
]
我正在使用邮递员测试每条路径,这两个网址之间似乎存在冲突。
将此 url 与 GET 一起使用可以:
http://my_domain.com:8000/some-path
但是使用相同的 url(并且具有有效的有效负载)的 POST 会引发错误:
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
抱歉!
解决方案
如果您指向相同的端点,即/some-path
,您应该添加额外的操作,
urlpatterns = [
url(r'^some-path$', MusicianViewset.as_view({'post': 'create', 'get': 'list'})),
]
推荐阅读
- python - Python Tkinter 进度条之后
- php - 使用 Gutenberg 将缩略图添加到自定义帖子类型 Wordpress
- reactjs - 多个选项卡中的 redux-from 验证
- javascript - 使用正则表达式匹配字符串中的后续序列
- excel - 具有多个工作表/多个标准的 SUMIFS
- javascript - 将用户输入翻译成日期/日期时间
- laravel - 如何在laravel中进行身份验证后重定向到页面之前登录用户详细信息
- php - 删除字符串中的 char '"' 并在 php 中创建数组
- php - 数据库死锁尝试在多个表中保存数据时
- java - 参数文件上的 AS400 SQL 脚本返回