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

Django createTruck接口调用时Postman返回Method "POST" not allowed错误

问题根因
  1. 核心原因:Django路由顺序匹配错误
    Django的路由规则是从上到下优先匹配,你当前urls.py中二级路径的通配路由trucks/<str:pk>/放在了固定路径路由trucks/create/前面。当你请求/api/trucks/create/时,Django会把路径中的create字符串当成pk参数,直接匹配到getTruck视图,而getTruck接口只允许GET请求,因此返回Method "POST" not allowed报错。
    删除、更新接口正常的原因是这两个接口的路径是三级路径(trucks/delete/<str:pk>/、trucks/update/<str:pk>/),不会被二级的通配路由匹配到,因此可以正常触发对应视图。
  2. 附带潜在问题
  • 视图字段拼写错误:createTruck视图中取参数写的是data['prototyp'],少了末尾的字母e,和请求体中的prototype字段名不匹配,路由问题修复后会直接抛出KeyError。
  • 用户赋值逻辑冲突:你在视图中直接取request.user赋值给卡车的user外键,但Postman请求没有携带认证信息时request.user是匿名用户,无法存入外键字段;且你请求体中传递的user参数在视图中完全没有被使用。
修复步骤
  1. 调整urls.py的路由顺序,把所有二级固定路径路由放在通配路由前面,修改后代码如下:
urlpatterns = [
    path('trucks/', views.getTrucks, name="trucks"),
    path('trucks/create/', views.createTruck, name="create-truck"),
    path('trucks/<str:pk>/', views.getTruck, name="truck"),
    path('trucks/delete/<str:pk>/', views.deleteTruck, name="delete-truck"),
    path('trucks/update/<str:pk>/', views.updateTruck, name="update-truck"),
]
  1. 修复createTruck视图的字段拼写错误和用户赋值逻辑:
    如果你测试阶段不需要做权限校验,直接取请求体中的user参数即可,修改后代码如下:
@api_view(['POST'])
def createTruck(request):
    data = request.data
    # 取请求体中的用户ID查询用户对象
    user = User.objects.get(id=data['user'])
    truck = Truck.objects.create(
        user=user,
        image=data['image'],
        make=data['make'],
        prototype=data['prototype'], # 修复拼写错误
        year=data['year'],
        serviceInterval=data['serviceInterval'],
        nextService=data['nextService'],
        seats=data['seats'],
        bedLength=data['bedLength'],
        color=data['color'],
        vin=data['vin'],
        currentMileage=data['currentMileage']
    )
    serializer = TruckSerializer(truck, many=False)
    return Response(serializer.data)

如果你需要保留request.user的权限校验逻辑,需要在Postman的请求头中添加对应的认证信息,比如DRF Token认证需要添加Authorization: Token 你的用户token参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:54:03