首页 > 解决方案 > 如何在 django 中检查 json 数据是否为空值

问题描述

我在 Django 中创建了一个 CRUD 应用程序。并想知道如何检查输入 JSON 数据是否为空,例如:我得到一个 JSON 输入字典

{'status':'abc','name':'xyz','address':'abc@123','city':'abc'}etc

我想检查名称是否为空且城市是否为空。我不想要模型中的必填字段,而是处理 JSON 数据。如果 JSON 输入无效,即如果用户名和电子邮件有效,则将数据保存到数据库中,否则会发出警告 400。

序列化程序.py

from rest_framework import serializers
from .models import Location
class LocationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Location
        fields= '__all__'

视图.py

@api_view(['POST'])
def locationAdd(request):
    serializer = LocationSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response("data entered successfully")
    else:
        return Response("data entered is not valid")
    return Response(serializer.data)

模型.py

class Location(models.Model):
    status = models.CharField(max_length=100)
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=100)
    postalCode = models.IntegerField(null=True)
    state = models.CharField(max_length=100)

标签: pythondjangodjango-rest-framework

解决方案


您可以在 views.py 文件中执行此操作。只需在调用序列化程序之前检查如下

@api_view(['POST'])
def locationAdd(request):

    if len(request.data.get('username')) == 0 and len(request.data.get('email')) == 0:
        return Response(status=400)

    serializer = LocationSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response("data entered successfully")
    else:
        return Response("data entered is not valid")
    return Response(serializer.data)

您可以像这样对您的请求数据添加任何验证。


推荐阅读