在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
相关产品推荐
相关产品推荐

