如何简化用于JSON校验的Django Rest Framework序列化器?
序列化器简化方案
存在简化写法,在子序列化器不需要在其他地方复用的场景下,可以把嵌套的序列化器定义为内部类,避免拆分多个独立的顶层类,结构更紧凑,校验逻辑和原写法完全等价:
from rest_framework import serializers class MySerializer(serializers.Serializer): # 嵌套定义子序列化器,不对外暴露命名空间 class RanksSchema(serializers.Serializer): class TopDictSchema(serializers.Serializer): start = serializers.IntegerField() end = serializers.IntegerField() # 补充child参数校验列表元素为整数,比原写法校验更严谨 top_list = serializers.ListField(child=serializers.IntegerField()) top_dict = TopDictSchema() top_id = serializers.IntegerField() ranks = RanksSchema()
调用验证逻辑和原写法一致,返回结果不变:
MySerializer(data=a).is_valid() == True > True
补充说明
如果后续TopDictSchema或者RanksSchema需要在其他序列化器中复用,还是建议拆分为独立的顶层类,方便复用。
内容的提问来源于stack exchange,提问作者user1367204
相关产品推荐
相关产品推荐

