You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建API时遇到Django REST Framework所有URL均提示POST方法不被允许问题求助

排查POST方法不允许的问题

我一眼就发现问题出在URL路由的顺序上!

看你的chat.urls配置:

urlpatterns = [
    path("<str:pk>/", ChatDetail.as_view()),
    path("messages/", MessagesView.as_view()),
]

Django的URL路由是从上到下依次匹配的,当你请求/chat/messages/时,第一个路由<str:pk>/会把messages当作pk参数匹配到ChatDetail视图,根本轮不到MessagesView。如果ChatDetail类没有定义post方法,自然就会返回"POST方法不被允许"的错误。

解决方案

调整URL的顺序,把更具体的路由放在前面:

urlpatterns = [
    path("messages/", MessagesView.as_view()),
    path("<str:pk>/", ChatDetail.as_view()),
]

这样当请求/chat/messages/时,会优先匹配到MessagesView,你的POST请求就能正常进入对应的处理方法了。

验证步骤

  1. 保存修改后的URL配置
  2. 重启开发服务器
  3. 再次发送POST请求到/chat/messages/,应该就能正常触发MessagesView的post方法了

你也可以顺便确认下ChatDetail视图确实没有实现post方法,但核心问题肯定是路由顺序导致的匹配错误。

内容的提问来源于stack exchange,提问作者kakakakakakakk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:17:44