一、功能简述
  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_字段名,返回值就是显示值。