序列化器字段 – Django REST框架
序列化器带有一些字段(条目),用于处理Django REST框架中序列化器的数据进出。序列化的动机是将DB数据转换为可以被javascript使用的数据类型。例如,如果你有一个名为Employee的类,其字段为Employee_id, Employee_name, is_admin等。那么,你就需要AutoField、CharField和BooleanField来通过Django存储和操作数据。我们需要多个字段来对数据进行默认验证,例如,我们需要使用EmailField来存储电子邮件,因为它可以将数据验证为一个电子邮件地址。
本文围绕着Django REST框架的序列化器中可以使用的多个字段以及如何使用它们。Django REST框架中的序列器字段可以分为以下几类
- Boolean Fields
- String Fields
- Numeric Fields
- 日期和时间字段
- 选择选择字段
- 文件上传字段
- Serializer Fields
- 串行器字段中的核心参数
Boolean Fields
布尔字段有两个主要字段–BooleanField和NullBooleanField。
BooleanField
一个布尔字段,用于包装真或假的值。它的工作原理与BooleanField – Django Models相同。默认情况下,serializers.BooleanField实例被创建为False。
语法 –
NullBooleanField
一个接受True、False和Null值的布尔字段。它的工作原理与NullBooleanField – Django Models相同。默认情况下,serializers.NullBooleanField实例被创建为无。
语法 –
要查看更多信息,请访问 – 序列化器中的布尔字段 – Django REST框架
String Fields
有三个主要字段 – CharField、EmailField和RegexField。
CharField
CharField用于存储文本表示法。可以选择验证文本是否短于max_length和长于min_length。它的工作原理与CharField – Django Models相同。
它有以下参数 –
- max_length – 验证输入的字符数不超过此数。
- min_length – 验证输入内容是否包含不少于此数量的字符。
- allow_blank – 如果设置为True,那么空字符串应该被认为是一个有效值。如果设置为False,那么空字符串被认为是无效的,并将引发一个验证错误。默认为False。
- trim_whitespace – 如果设置为True,那么前导和尾部的空白将被修剪。默认为True。
语法 –
EmailField
EmailField也是一个文本表示法,它验证文本是一个有效的电子邮件地址。它与EmailField – Django模型相同。它采用CharField的所有参数,具有相同的功能。
语法 –
RegexField
顾名思义,RegexField将字符串与一个特定的重合词相匹配,否则会引发错误。它与RegexField – Django Forms相同。它接受CharField的所有参数,具有相同的功能。
语法 –
要查看更多信息,请访问 – 序列化器中的字符串字段 – Django REST框架
URL Fields
有两个主要字段 – URLField和SlugField。
URLField
URLField基本上是一个RegexField,根据URL匹配模式验证输入。希望得到形式为http:/// 的完全合格的URLs。它的工作原理与URLField – Django模型相同。
它有以下参数 –
- allow_blank – 如果设置为True,那么空字符串应该被认为是一个有效值。如果设置为False,那么空字符串被认为是无效的,并将引发一个验证错误。默认为False。
语法 –
SlugField
SlugField是一个RegexField,它根据模式[a-zA-Z0-9_-]+验证输入。它与SlugField – Django模型相同。
语法 –
要查看更多信息,请访问 – 序列化器中的URL字段 – Django REST框架
Numeric Fields
有三个主要字段 – IntegerField, FloatField 和 DecimalField。
IntegerField
IntegerField基本上是一个整数字段,它根据Python的int实例验证输入。它与IntegerField – Django Models相同。
它有以下参数 –
- max_value 验证所提供的数字是否不大于这个值。
- min_value 验证所提供的数字是否不低于这个值。
语法 –
FloatField
FloatField基本上是一个浮动字段,根据Python的浮动实例来验证输入。
它有以下参数 –
- max_value 验证所提供的数字是否不大于这个值。
- min_value 验证所提供的数字是否不低于这个值。
语法 –
DecimalField
DecimalField基本上是一个十进制字段,根据Python的十进制实例验证输入。它与DecimalField – Django Models相同。
它有以下参数 –
- max_digits 数字中允许的最大位数。它必须是无或大于或等于小数位数的整数。
- decimal_places 要与数字一起存储的小数位数。
- max_value 验证所提供的数字是否不大于这个值。
- min_value 验证所提供的数字是否不低于这个值。
- localize 设置为 “True “以启用基于当前语言的输入和输出的本地化。
语法 –
查看更多信息,请访问 – 序列化器中的数字字段 – Django REST框架
日期和时间字段
有四个主要字段 – DateTimeField、DateField、TimeField和DurationField。
DateTimeField
DateTimeField是一个用于表示日期和时间的序列化字段。它与Django模型中的DateTimeField相同。
它有以下参数 –
- format – 一个代表输出格式的字符串。如果不指定,默认为与DATETIME_FORMAT设置键相同的值,除非设置为’iso-8601’。设置为格式字符串表明to_representation的返回值应该被强制为字符串输出。格式字符串将在下面描述。将此值设置为None表示Python日期时间对象应该由to_representation返回。在这种情况下,日期时间的编码将由渲染器决定。
- input_formats – 代表输入格式的字符串列表,可用于解析日期。如果没有指定,将使用DATETIME_INPUT_FORMATS设置,其默认值为[‘iso-8601’]。
- default_timezone – 一个代表时区的 pytz.timezone。如果没有指定并且启用了USE_TZ设置,则默认为当前时区。如果USE_TZ被禁用,那么日期时间对象将是幼稚的。
语法 –
DateField
DateField是一个用于表示日期的序列化字段。通常情况下,人们需要存储日期,例如在博客模型中,每篇文章的日期都需要被存储。这个字段与DateField相同 – Django模型
它有以下参数 –
- format – 一个代表输出格式的字符串。如果没有指定,这默认为与DATE_FORMAT设置键相同的值,除非设置为’iso-8601’。设置为格式字符串表明to_representation的返回值应该被强制为字符串输出。格式化字符串在下面有描述。将此值设置为None表示Python日期对象应该由to_representation返回。在这种情况下,日期编码将由渲染器决定。
- input_formats – 代表输入格式的字符串列表,可用于解析日期。如果没有指定,将使用DATE_INPUT_FORMATS设置,其默认值为[‘iso-8601’]。
语法 –
TimeField
Timefield是一个用于表示时间的序列化字段。通常情况下,人们需要存储日期,例如在博客模型中,每篇文章的时间都需要被存储。
它有以下参数 –
- format – 一个代表输出格式的字符串。如果没有指定,这默认为与TIME_FORMAT设置键相同的值,除非设置为’iso-8601’。设置为格式字符串表明to_representation的返回值应该被强制为字符串输出。格式字符串将在下面描述。将此值设置为 None 表示 Python 时间对象应该由 to_representation 返回。在这种情况下,时间编码将由渲染器决定。
- input_formats – 代表输入格式的字符串列表,可用于解析日期。如果没有指定,将使用TIME_INPUT_FORMATS设置,其默认值为[‘iso-8601’]。
语法 –
DurationField
DurationField是一个用于表示持续时间的序列化字段。该字段与DurationField – Django Models相同。
它有以下参数 –
- max_value 验证所提供的持续时间是否不超过这个值。
- min_value 验证所提供的持续时间是否不低于这个值。
语法 –
要查看更多信息,请访问 – 序列化器中的日期和时间字段 – Django REST框架
选择选择字段
有两个主要字段–Choice和MultipleChioceField。
ChoiceField
ChoiceField基本上是一个CharField,它根据有限的选择集中的一个值来验证输入。这个字段与ChoiceField – Django Forms相同。
它有以下参数 –
- choices – 一个有效值的列表,或者一个(key, display_name)图元的列表。
- allow_blank – 如果设置为True,那么空字符串应该被认为是一个有效值。如果设置为False,那么空字符串被认为是无效的,并将引发一个验证错误。默认为False。
- html_cutoff – 如果设置,这将是一个HTML选择下拉菜单显示的最大选择数。可以用来确保自动生成的ChoiceFields具有非常大的可能的选择,不会妨碍模板的渲染。默认为无。
- html_cutoff_text – 如果设置了这个,在HTML选择下拉菜单中,如果项目的最大数量已经被切断,将显示一个文本指示。默认为 “超过{count}项…”。
语法 –
MultipleChoiceField
ChoiceField基本上是一个CharField,它根据一组从有限的选择中选出的0、1或多个值来验证输入。这个字段与MultipleChoiceField – Django Forms .NET相同。
语法 –
要查看更多信息,请访问 – 序列化器中的选择字段 – Django REST框架
文件上传字段
有两个主要字段 – FileField和ImageField。
FileField
FileField基本上是一个文件表示法。它执行Django的标准FileField验证。这个字段与FileField – Django Models相同。
它有以下参数 –
- max_length – 指定文件名的最大长度。
- allow_empty_file – 指定是否允许空文件。
- use_url – 如果设置为True,那么URL字符串值将被用于输出表示。如果设置为False,那么文件名字符串值将被用于输出表示。默认为UPLOADED_FILES_USE_URL设置键的值,除非另行设置,否则为True。
语法 –
ImageField
ImageField是一个图像表示法。它验证上传的文件内容是否符合已知的图像格式。这与ImageField – Django forms相同。
它有以下参数 –
- max_length – 指定文件名的最大长度。
- allow_empty_file – 指定是否允许空文件。
- use_url – 如果设置为True,那么URL字符串值将被用于输出表示。如果设置为False,那么文件名字符串值将被用于输出表示。默认为UPLOADED_FILES_USE_URL设置键的值,除非另行设置,否则为True。
语法 –
查看更多信息,请访问 – 序列器中的文件上传字段 – Django REST框架
Serializer Fields
字段名称 | 描述 |
---|---|
BooleanField | 一个布尔字段,用于包装真或假的值。 |
NullBooleanField | 一个接受True、False和Null值的布尔字段。 |
CharField | CharField用于存储文本表示法。 |
EmailField | EmailField也是一个文本表示法,它验证了文本是一个有效的电子邮件地址。 |
RegexField | 顾名思义,RegexField将字符串与一个特定的重合词相匹配,否则会引发错误。 |
URLField | URLField基本上是一个RegexField,它根据一个URL匹配模式验证输入。 |
SlugField | SlugField是一个RegexField,根据模式[a-zA-Z0-9_-]+验证输入。 |
IPAddressField | IPAddressField是一个字段,确保输入是有效的IPv4或IPv6字符串。 |
IntegerField | IntegerField 基本上是一个整数字段,根据 Python 的 int 实例验证输入。 |
FloatField | FloatField 基本上是一个浮点字段,根据 Python 的浮点实例验证输入。 |
DecimalField | DecimalField 基本上是一个十进制字段,根据 Python 的十进制实例验证输入。 |
DateTimeField | DateTimeField是一个序列化字段,用于表示日期和时间。 |
DateField | DateField是一个序列化字段,用于表示日期。 |
TimeField | Timefield是一个用于表示时间的序列化字段。 |
DurationField | DurationField是一个用于表示持续时间的序列化字段。 |
ChoiceField | ChoiceField基本上是一个CharField,它根据一组有限的选择中的一个值来验证输入。 |
MultipleChoiceField | MultipleChoiceField基本上是一个CharField,它根据一组从有限的选择中选出的0、1或多个值来验证输入。 |
FileField | FileField基本上是一个文件表示。它执行Django的标准FileField验证。 |
ImageField | ImageField是一种图像表示法。它验证上传的文件内容是否符合已知的图像格式。 |
ListField | ListField 基本上是一个列表字段,根据一个对象的列表来验证输入。 |
JSONField | JSONField基本上是一个字段类,用于验证传入的数据结构是否由有效的JSON原语组成。 |
HiddenField | HiddenField是一个不根据用户输入取值的字段类,而是从默认值或可调用值取值。 |
DictField | DictField基本上是一个字典字段,它根据对象的字典来验证输入。 |
串行器字段中的核心参数
Django中的序列化字段与Django表格字段和Django模型字段相同,因此需要某些参数来操作这些字段的行为。
论据 | 说明 |
---|---|
read_only | 将此设置为True,以确保在序列化表示时使用该字段,但在反序列化期间创建或更新实例时不使用该字段。 |
Write_only | 将此设置为True,以确保在更新或创建实例时可以使用该字段,但在序列化表示时不包括在内。 |
required | 将此设置为False也允许在序列化实例时从输出中省略对象属性或字典键。 |
默认 | 如果设置,这将给出默认值,如果没有提供输入值,将用于该字段。 |
allow_null | 通常情况下,如果None被传递给一个序列化器字段,将会产生一个错误。如果None被认为是一个有效的值,请将这个关键字参数设置为True。 |
源 | 将被用于填充字段的属性名称。 |
验证器 | 一个验证器函数的列表,这些函数应该应用于输入的字段,它们要么引发一个验证错误,要么简单地返回。 |
error_messages | 一个错误代码的字典,用于错误信息。 |
label | 一个简短的文本字符串,可作为HTML表格字段或其他描述性元素中的字段名称。 |
help_text | 一个文本字符串,可作为HTML表单字段或其他描述性元素的描述。 |
initial | 一个应该用于预先填充HTML表格字段的值。 |