Postman发送POST请求遇404 Not Found错误的排查与解决
解决POST请求404 Not Found问题
核心问题:路由注册路径错误
你在App.urls中注册ViewSet时,路径参数多了末尾斜杠:
router.register('plants/', views.PlantViewSet)
Django的DefaultRouter会自动为生成的URL添加末尾斜杠,这会导致实际匹配路径出现重复斜杠(如api/plants//),和你Postman请求的api/plants/无法匹配,从而返回404。
修复步骤
- 修改
App.urls中的路由注册,去掉plants后的斜杠:
router = DefaultRouter() router.register('plants', views.PlantViewSet) # 移除末尾的/ urlpatterns = [ path('api/', include(router.urls)) ]
- 确认Postman的请求URL为
http://localhost:8000/api/plants/(替换成你的实际服务域名/端口),保证路径准确。
额外代码优化建议(非404相关,提升健壮性)
你的create方法直接读取request.data创建对象,跳过了序列化器的验证逻辑,容易引发数据错误或安全问题,建议改用DRF标准流程处理:
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) return Response("Plant created successfully", status=status.HTTP_201_CREATED)
这样可以利用PlantSerializer的验证规则,同时符合DRF的规范开发流程。
内容的提问来源于stack exchange,提问作者Sk09
相关产品推荐
相关产品推荐

