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

Django REST framework中POST请求报405 Method Not Allowed问题求助

错误原因

你代码里的@api_view装饰器只指定了允许GET请求方法,尽管函数内部写了POST请求的处理逻辑,但Django REST Framework的api_view装饰器会先对请求方法做校验,不在允许列表里的请求会直接返回405错误,这就是POST请求被拒绝的核心原因。

解决方法

1. 更新api_view装饰器的允许方法列表

把装饰器改成同时支持GET和POST,让DRF允许该视图处理POST请求:

@api_view(['GET', 'POST'])
def product_list(request):
    if request.method == 'GET':
        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)
        return Response(serializer.data)
    if request.method == 'POST':
        serializer = ProductSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)

2. 补充序列化器校验失败的响应(推荐)

当前代码中如果序列化器校验不通过,没有返回任何响应,不符合REST API规范,建议添加错误返回逻辑:

if serializer.is_valid():
    serializer.save()
    return Response(serializer.data)
# 添加这行,返回校验错误信息和400状态码
return Response(serializer.errors, status=400)

修改完成后,POST请求就能正常被视图处理了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:32:04