DRF序列化字段属性及参数说明

2020-02-09 13:05:57 最后一行代码 阅读:458

分类: Django

下面方法均来自官方文档https://www.django-rest-framework.org/api-guide/fields/

 

字段通用参数:

1、该字段是否仅用于序列化输出,默认False

read_only = False/True

 

2、该字段是否仅用于反序列化输入,默认False

write_only = False/True

 

3、该字段在反序列化时必须输入,默认True

required = True/False

 

4、初始化值,可以指定函数对象

initial = 

 

5、反序列化时使用的默认值,可接收函数

default = ""

 

6、该字段是否可以为空,默认False((数字或非文本首选)

allow_null = False/True

 

7、参数为当前模型属性/方法对象字符串,用于获取关联数据。(正向查询:"关联字段.关联模型字段"。反向查询:"关联模型_set.all"。模型中自定义的方法同样可以调用。多对多字段好像只能获取实例对象,无法获取字段数据)

source = ""

 

8、该字段使用的验证器函数列表,会触发serializers.ValidationError错误。(django内置的ValidationError同样兼容)

validators = []

 

9、包含错误编号于错误信息的字典(用法同Form表单中的error_messages)

error_messages = {}

 

10、自定义HTML展示API页面时显示的字段名称

label = ""

 

11、自定义HTML展示API页面时显示的字段帮助信息

help_text = ""

 

 

序列化字段:(注意都需要rest_framework.serializers调用)

1、布尔类型

.BooleanField()

 

2、布尔类型,但他可以接受None

.NullBooleanField()

 

3、字符串类型

参数:

    max_length=""        最大长度 
    min_length=""        最小长度
    allow_null               是否可以为空,默认False(数字或非文本首选)
    allow_blank            是否可以为空,默认False(文本首选)
    trim_whitespace    是否去除前后空格,默认True

.CharField()

 

4、邮箱验证字段

参数:

    max_length        最大长度 
    min_length        最小长度
    allow_blank        是否可以为空,默认False(文本首选)

.EmailField()

 

5、正则表达式

参数:

    <regex>      正则对象或正则字符串

    max_length=""       最大长度 
    min_length=""       最小长度
    allow_blank            是否可以为空,默认False(文本首选)

.RegexField()

 

6、Django内置正则

参数:

    max_length=""     最大长度 
    min_length=""      最小长度
    allow_blank           是否可以为空,默认False(文本首选)

.SlugField()

    

7、uuid验证字段

参数:

    format=""        指定格式    

                            'hex_verbose'       规范的16进制表示,包括连字符"-"(如:"5ce0e9a5-5ffa-654b-cee0-1238041fb31a")

                            'hex'                    紧凑的16进制表示,不包括连字符"-"(如:"5ce0e9a55ffa654bcee01238041fb31a")

                            'int'                      uuid的128个整数表示(如:"1234567890123123131341245123511451451451114")

                            'urn'                    uuid的RFC4122URN表示(如:"urn:uuid:5ce0e9a5-5ffa-654b-cee0-1238041fb31a")

.UUIDField()

 

8、URL验证字段

参数:

    max_length=""          最大长度 
    min_length=""          最小长度
    allow_blank               是否可以为空,默认False(文本首选)

.URLField()

 

9、文件路径字段

参数:

    <path>              绝对路径

    match = None     正则表达式字符串,用来过滤文件名
    recursive              是否应包含路径的所有子目录,默认False
    allow_files            是否允许文件,默认True
    allow_folders       是否允许文件夹,默认False

.FilePathField()

 

10、验证IP是否为IPv4/IPv6字符串的字段

参数;

    protocol = “”         指定协议,默认'both'即 IPv4/IPv6都匹配

                                    'both'

                                    'IPv4'

                                    'IPv6'

.IPAddressField()

 

11、整数字段

参数:

    max_value=""      最大上限
    min_value=""      最小下限

.IntegerField()

 

12、浮点数字段

参数:

    max_value=""      最大上限
    min_value=""      最小下限

.FloatField()

 

13、十进制字段,Decimal对象

参数:

    max_digits              整数位的最大位数
    decimal_places       小数位的最小位数
    max_value              数字最大上限
    min_value              数字最小下限
    rounding               舍入模式,默认None
    coerce_to_string    如果为True则输出字符串,入果为False则输出Decimal对象。

.DecimalField() 

 

14、日期时间字段,格式化符使用python的

参数:

    format=""                指定日期时间的输出格式字符串,默认使用'iso-8601'。如果为None则由渲染器决定格式(最后由to_representation()方法返回字符串)
    input_formats=[]      解析日期时间的输入格式的字符串列表,默认'iso-8601'。
    default_timezone      指定时区,默认使用settings.py中USE_TZ时区。

.DateTimeField()

 

15、日期字段

参数:

    format=""                指定日期时间的输出格式字符串,默认使用'iso-8601'。如果为None则由渲染器决定格式(最后由to_representation()方法返回字符串)
    input_formats=[]      解析日期时间的输入格式的字符串列表,默认'iso-8601'。

.DateField()

 

16、时间字段

参数:

    format=""                指定日期时间的输出格式字符串,默认使用'iso-8601'。如果为None则由渲染器决定格式(最后由to_representation()方法返回字符串)
    input_formats=[]      解析日期时间的输入格式的字符串列表,默认'iso-8601'。

.TimeField()

 

17、距离上次时间间隔(类似Django模板过滤标签"{{ time |timesince: time }}")

参数:

    max_value           持续时间上限
    min_value            持续时间下限

.DurationField()

 

18、下拉选择列表字段

参数:

    choices=[]               参数为(Key,Value)元组,多个选项用列表嵌套。用户看到的是value,实际保存的是key
    allow_blank              是否可以为空,默认False(文本首选)
    html_cutoff             下拉列表显示的最大选择数,默认None
    html_cutoff_text      当选择项目数超出最大数时显示文本提示,默认"More than {count} items…"

.ChoiceField()

 

19、多重选择字段

参数:
    choices=[]                参数为(Key,Value)元组,多个选项用列表嵌套。用户看到的是value,实际保存的是key
    allow_blank               是否可以为空,默认False(文本首选)
    html_cutoff              下拉列表显示的最大选择数,默认None
    html_cutoff_text       当选择项目数超出最大数时显示文本提示,默认"More than {count} items…"

.MultipleChoiceField()

 

20、验证上传文件

参数:
    max_length             文件名最大长度
    allow_empty_file      是否允许空文件,默认False
    use_url                    如果为True则以网址字符串输出表示,如果为False则以文件名字符串输出表示。默认为UPLOADED_FILES_USE_URL的配置Key

.FileField()

 

21、验证上传图片是否与已知图片格式匹配(需要Pillow库)

参数:
    max_length             图片名最大长度
    allow_empty_file      是否允许空文件,默认False
    use_url                    如果为True则以网址字符串输出表示,如果为False则以文件名字符串输出表示。默认为UPLOADED_FILES_USE_URL的配置Key

.ImageField()

 

22、列表字段

参数:
    child                     指定不需要进行验证的字段实例
    allow_empty         是否允许空列表,默认True
    max_length          指定不进行验证的字段实例数量的上限
    min_length           指定不进行验证的字段实例数量的下限

.ListField()

 

23、验证对象字典的字段类

参数:
    child                     应用于验证字典中值的字段实例。如果未提供此参数,则映射中的值将不会被验证。
    allow_empty         是否允许空字典,默认True

.DictField()

 

24、验证传入数据结构是否为JSON

参数:

    binary                是否输出并验证JSON字符串,默认False(True表示JSON字符串,False表示JSON对象)
    encoder             使用这个JSON编码器序列化输入对象,默认False

.JSONField()

 

25、只读字段

.ReadOnlyField()

 

26、自定义模型字段。可以绑定到任意模型的通用字段,将序列化/反序列化任务委托给其关联的模型字段。此字段可用于为自定义模型字段创建序列化程序字段,而无需创建新的自定义序列化程序字段。

参数:
    model_field          模型字段实例

.ModelField()

 

27、自定义序列化字段

参数:

    method_name      指定执行函数名,但不能与当前属性名重复,默认为"get_<该属性名>"。

.SerializerMethodField()

回复:

快来抢沙发

老板赏瓶水呗
微信 微信 支付宝 支付宝