如何在Django中验证JSON对象 [英] How to validate a json object in django
问题描述
我正在使用AJAX将JSON提交到django视图. JSON如下所示:
I'm submitting a JSON to a django view with AJAX. The JSON looks like the following:
{
"code":"9910203040", // required
"name":"Abc", // required
"payments":[
{
"amount":300, // required
"name":"efg", // required,
"type": 2 // can be empty
},
{
"amount":100,
"name":"pqr",
"type": 3
}
]
}
付款清单可以是任何大小.如何在Django中对此进行验证?是否可以使用Django Forms进行验证?如果是Spring,我会创建Request类并在字段上使用批注,但无法弄清楚如何在Django中做到这一点.
The payments list can be of any size. How can I validate this in Django? Is it possible to use Django Forms to validate this? If it was Spring, I would create Request classes and use annotations on fields but can't figure out how to do this in Django.
推荐答案
您可以使用django rest框架来验证请求数据,如@ zaphod100.10所述,
You can use django rest framework to validate request data as mentioned by @zaphod100.10 ,
这是可用于验证的序列化程序-
here is the serializer you can use to validate-
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)
您需要像这样在视图部分中对其进行验证-
You need like this to validate it in the view section -
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)
如果足以解决您的问题,请告诉我.
Let me know, if it is enough to solve your problem.
这篇关于如何在Django中验证JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!