如何在Django中验证JSON对象

Nay*_*yan 2 django

我正在使用AJAX将JSON提交到django视图。JSON如下所示:

{
   "code":"9910203040", // required
   "name":"Abc", // required
   "payments":[
      {
         "amount":300, // required
         "name":"efg", // required,
         "type": 2 // can be empty
      },
      {
         "amount":100,
         "name":"pqr",
         "type": 3
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

付款清单可以是任何大小。如何在Django中验证?是否可以使用Django Forms进行验证?如果是Spring,我将创建Request类并在字段上使用注释,但无法弄清楚如何在Django中执行此操作。

tom*_*tom 9

您可以使用django rest框架来验证请求数据,如@ zaphod100.10所述,

这是您可以用来验证的序列化器-

from rest_framework import serializers

class PaymentSerializer(serializers.Serializer):
    amount = serializers.IntegerField(required=True, min_value=0, null=True)
    name = serializers.CharField(required=True, max_length=128)
    type = serializers.IntegerField(required=True, min_value=0)

class ValidateFormSerializer(serializers.Serializer):
    code = serializers.CharField(required=True, max_length=32)
    name = serializers.CharField(required=True, max_length=128)
    payments = serializers.ListField(child=PaymentSerializer)
Run Code Online (Sandbox Code Playgroud)

您需要这样才能在“视图”部分中对其进行验证-

 import ValidateFormSerializer

# add this snippet in your view section
 valid_ser = ValidateFormSerializer(data=request.data)
 if valid_ser.is_valid():
       post_data = valid_ser.validated_data
 else:
      print(valid_ser.errors)
Run Code Online (Sandbox Code Playgroud)

让我知道,是否足以解决您的问题。