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

在Django中如何校验输入JSON数据是否存在空值

Django REST Framework 非模型层JSON空值校验方案

1. 修改 serializers.py 新增字段校验规则

直接在序列化器中显式重写name和city字段,覆盖模型默认的字段配置,无需修改模型代码即可实现必填校验:

from rest_framework import serializers
from .models import Location

class LocationSerializer(serializers.ModelSerializer):
    # 显式指定字段必填,且不允许为空字符串
    name = serializers.CharField(required=True, allow_blank=False)
    city = serializers.CharField(required=True, allow_blank=False)

    class Meta:
        model = Location
        fields= '__all__'

这里的required=True要求请求必须携带这两个字段,allow_blank=False禁止传入空字符串,完全匹配非空校验需求,不会影响模型层的原有配置。

2. 修改 views.py 适配400错误返回

原有视图校验失败时没有返回规范的400状态码,调整后代码如下:

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import LocationSerializer

@api_view(['POST'])
def locationAdd(request):
    serializer = LocationSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response("data entered successfully")
    # 校验失败直接返回400状态码和具体错误信息
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

调整后如果传入的name或city为空,接口会直接返回400状态码,同时返回对应的字段错误提示,符合REST接口规范。原有冗余的末尾return语句已经删除,因为if分支已经覆盖了校验通过的所有场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 02:36:01