Django Rest Framework中ModelViewSet未注册create路由的问题求助
问题原因
DRF 中 DefaultRouter 为 ModelViewSet 生成路由时,列表查询(GET 方法)和创建操作(POST 方法)共用同一条 URL 路径 /api/entries/,路由别名统一为 {basename}-list,并不会生成单独的 {basename}-create 别名。你看到的 show_urls 输出是正常的,不存在单独的 api:entry-create 路由名。
解决方法
你调用 reverse("api:entry-list") 获取到 /api/entries/ 路径后,发 POST 请求即可触发 create 逻辑,不需要找单独的 create 路由。
额外排查点
如果调用上述路径发 POST 请求没有触发 create 逻辑,可以检查你的 EntryViewSet 或其父类是否自定义了 http_method_names 属性,且该属性中没有包含 post,如果是这个情况,把 post 加入 http_method_names 列表即可。
内容的提问来源于stack exchange,提问作者Eray Erdin
相关产品推荐
相关产品推荐

