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

使用Django Rest Framework创建的API在Postman中报JSON解析错误求助

解决Django REST Framework CreateAPIView Postman调用时的JSON解析错误

我之前也碰到过一模一样的问题!你用CreateAPIView写的POST接口在浏览器里正常运行,但Postman调用就报JSON解析错误,核心原因是Postman的请求格式没配置对,导致DRF无法正确解析你的请求体。下面给你拆解问题和具体解决办法:

你的代码回顾

先贴出你的代码方便上下文理解:

views.py

class AuthorCreateAPIView(CreateAPIView):
    queryset = Author.objects.all()
    serializer_class = AuthorCreateUpdateSerializer

serializers.py

class AuthorCreateUpdateSerializer(ModelSerializer):
    class Meta:
        model = Author
        fields = [ 'name', 'biography', ]

错误原因解析

你遇到的错误提示:

"detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)"

这个错误说明DRF的JSON解析器没有接收到合法的JSON数据,通常分为两种情况:

  1. Postman未设置正确的Content-Type请求头,DRF无法识别你发送的是JSON格式数据
  2. 请求体的JSON存在语法错误,或者是空请求体

补充说明:浏览器默认用表单提交(application/x-www-form-urlencoded格式),CreateAPIView默认支持这种格式,所以浏览器里能正常运行,但Postman不会自动帮你配置这些,需要手动调整。

解决办法

方法1:正确配置Postman请求(推荐)

这是最直接的解决方式,确保Postman发送合法的JSON请求:

  • 打开Postman的POST请求页面
  • 切换到Headers标签,添加一条请求头:
    • Key: Content-Type,Value: application/json
  • 切换到Body标签:
    • 选择raw选项,右侧格式下拉框选JSON
    • 输入合法的JSON请求体,示例:
      {
        "name": "George Orwell",
        "biography": "Author of 1984 and Animal Farm."
      }
      
    • 注意检查JSON语法:引号要成对、逗号不要冗余、键名要和序列化器字段完全匹配(name和biography)

方法2:让视图同时支持JSON和表单格式

如果你希望接口既能兼容Postman的JSON请求,又能支持浏览器的表单提交,可以给视图添加多解析器支持:
修改你的views.py:

from rest_framework.generics import CreateAPIView
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
from .models import Author
from .serializers import AuthorCreateUpdateSerializer

class AuthorCreateAPIView(CreateAPIView):
    queryset = Author.objects.all()
    serializer_class = AuthorCreateUpdateSerializer
    # 添加多解析器,同时支持JSON和表单格式
    parser_classes = [JSONParser, FormParser, MultiPartParser]

这样不管是JSON请求还是表单请求,DRF都能正确解析处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:36:04