drf之序列化组件

一、功能简述

  1、序列化:通过序列化器把模型对象转为字典,再传入Response后输出json格式数据。

  2、反序列化:把前端传入的数据从request中以字典的形式取出,再经过序列化器转为模型对象,转为模型对象的过程中可以进行数据校验。

二、简单实用流程

  1、创建一个任意命名的py文件。

  2、写一个类,继承serializers.Serializer,这个类就是序列化器。

  3、在类中定义需要序列化的字段。

  4、在视图中导入序列化器,生成序列化对象,把需要序列化的模型对象传入序列化对象中。

  5、通过序列化对象.data可以得到模型对象转化后的字典。

  6、通过JsonResponse或Response返回该字典。

三、序列化器的字段类型

  1、布尔类型:BooleanField()。

  2、可空布尔类型:NullBooleanField()。

  3、字符类型:CharField(max_length=None, min_length=None, allow_blank=False, trim_whitespace=True)。

  4、邮箱类型:EmailField(max_length=None, min_length=None, allow_blank=False)。

  5、正则类型:RegexField(regex, max_length=None, min_length=None, allow_blank=False)。

  6、匹配类型:SlugField(maxlength=50, min_length=None, allow_blank=False)

  7、路由类型:URLField(max_length=200, min_length=None, allow_blank=False)。

  8、uuid类型:UUIDField(format='hex_verbose')。

  9、ip地址类型:IPAddressField(protocol='both', unpack_ipv4=False, **options)。

  10、整数类型:IntegerField(max_value=None, min_value=None)。

  11、浮点类型:FloatField(max_value=None, min_value=None)。

  12、小数类型:DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None)。

  13、日期时间类型:DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None)。

  14、日期类型:DateField(format=api_settings.DATE_FORMAT, input_formats=None)。

  15、时间类型:TimeField(format=api_settings.TIME_FORMAT, input_formats=None)。

  16、持续时间类型:DurationField()。

  17、单选类型:ChoiceField(choices)。

  18、多选类型:MultipleChoiceField(choices)。

  19、文件类型:FileField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL)。

  20、图片类型:ImageField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL)。

  21、列表类型:ListField(child=, min_length=None, max_length=None)。

  22、字典类型:DictField(child=)。

四、序列化器的字段选项

  1、max_length:最大长度。

  2、min_lenght:最小长度。

  3、allow_blank:是否允许为空。

  4、trim_whitespace:是否移除空白字符。

  5、max_value:最大值。

  6、min_value:最小值。

  7、read_only:表明该字段仅用于序列化输出,默认False。

  8、write_only:表明该字段仅用于反序列化输入,默认False。

  9、required:表明该字段在反序列化时必须输入,默认True。

  10、default:反序列化时使用的默认值。

  11、allow_null:表明该字段是否允许传入None,默认False。

  12、validators:该字段使用的验证器。

  13、error_messages:包含错误编号与错误信息的字典。

  14、label:用于HTML展示API页面时,显示的字段名称。

  15、help_text:用于HTML展示API页面时,显示的字段帮助提示信息。

  16、source:

    ①替换字段的显示名称。

    ②获取模型类方法的执行结果。

    ③可以写点跨表的查询语句。

五、SerializerMethodField()的使用:需要有个配套方法,方法名为get_字段名,返回值就是显示值。

原文地址:https://www.cnblogs.com/caoyu080202201/p/13260698.html