【发布时间】:2019-10-09 23:48:59
【问题描述】:
在我的 url conf 中,我有两个相似的模式:
urlpatterns = [
path('chat/', views.chat), # create chat
path('chat/message/', views.message), # create message
]
第二条路径按预期工作,但是,当我尝试将数据发布到 chat/ 时,我收到错误 405 和 {"detail":"Method \"POST\" not allowed."} 错误消息。视图中的代码有效,如果我将chat/ 修改为更具体的内容,例如chat/create/,那么一切正常。然而,这不是我想要做的。我认为 django 会匹配与请求匹配的第一个 URL。为什么会这样?是这个错误还是预期的行为?
【问题讨论】:
-
你能发表意见吗?以及您发布数据的方式
-
视图用
api_view(['POST'])装饰器标记,它们只是返回带有生成聊天/消息ID(模型)的帖子数据。我使用 curl 将数据发布到 api。如果是chat/,我发送{"user": 1}json,如果是chat/message/,我发送{"user": 1, "text": "Hello, World!", "chat": 1}。当 url 不“冲突”时,视图按预期工作。 -
@Liliane 只需编辑您的问题并在此处添加格式化的信息。
-
@Liliane 只是一个捷径。如果您不使用正则表达式锚点(不幸的是 django 2 删除了此功能),请始终尝试将大路径放在首位。
标签: python django python-3.x django-rest-framework django-urls