• 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_字段名,返回值就是显示值。

  • 相关阅读:
    How to build Skia canvaskit
    c++ 多线程 并发 id generator 产生器
    c++ 多态 读书笔记
    c++ 各种奇门鬼爪的构造函数 和 类的初始化
    图说C++对象模型:对象内存布局详解 强烈推荐
    C++对象模型之RTTI的实现原理
    C++ cast static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符) 强烈推荐
    Markdown 语法
    vc 编译选项 忽略crash
    chromium 编译报错 You must installWindows 10 SDK version 10.0.19041.0 including the "Debugging Tools for Windows" feature.
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13260698.html
Copyright © 2020-2023  润新知