序列化器字段 – Django REST框架

序列化器字段 – 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。
语法 –

field_name = serializers.BooleanField() 
Python

NullBooleanField

一个接受True、False和Null值的布尔字段。它的工作原理与NullBooleanField – Django Models相同。默认情况下,serializers.NullBooleanField实例被创建为无。
语法 –

field_name = serializers.NullBooleanField()
Python

要查看更多信息,请访问 – 序列化器中的布尔字段 – 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。

语法 –

field_name = serializers.CharField(*args, **kwargs) 
Python

EmailField

EmailField也是一个文本表示法,它验证文本是一个有效的电子邮件地址。它与EmailField – Django模型相同。它采用CharField的所有参数,具有相同的功能。
语法 –

field_name = serializers.EmailField(*args, **kwargs) 
Python

RegexField

顾名思义,RegexField将字符串与一个特定的重合词相匹配,否则会引发错误。它与RegexField – Django Forms相同。它接受CharField的所有参数,具有相同的功能。
语法 –

field_name = serializers.RegexField(*args, **kwargs)
Python

要查看更多信息,请访问 – 序列化器中的字符串字段 – Django REST框架

URL Fields

有两个主要字段 – URLField和SlugField。

URLField

URLField基本上是一个RegexField,根据URL匹配模式验证输入。希望得到形式为http:/// 的完全合格的URLs。它的工作原理与URLField – Django模型相同。

它有以下参数 –

  • allow_blank – 如果设置为True,那么空字符串应该被认为是一个有效值。如果设置为False,那么空字符串被认为是无效的,并将引发一个验证错误。默认为False。

语法 –

field_name = serializers.URLField(*args, **kwargs) 
Python

SlugField

SlugField是一个RegexField,它根据模式[a-zA-Z0-9_-]+验证输入。它与SlugField – Django模型相同。

语法 –

field_name = serializers.SlugField(*args, **kwargs)
Python

要查看更多信息,请访问 – 序列化器中的URL字段 – Django REST框架

Numeric Fields

有三个主要字段 – IntegerField, FloatField 和 DecimalField。

IntegerField

IntegerField基本上是一个整数字段,它根据Python的int实例验证输入。它与IntegerField – Django Models相同。

它有以下参数 –

  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。

语法 –

field_name = serializers.IntegerField(*args, **kwargs) 
Python

FloatField

FloatField基本上是一个浮动字段,根据Python的浮动实例来验证输入。

它有以下参数 –

  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。

语法 –

field_name = serializers.FloatField(*args, **kwargs) 
Python

DecimalField

DecimalField基本上是一个十进制字段,根据Python的十进制实例验证输入。它与DecimalField – Django Models相同。

它有以下参数 –

  • max_digits 数字中允许的最大位数。它必须是无或大于或等于小数位数的整数。
  • decimal_places 要与数字一起存储的小数位数。
  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。
  • localize 设置为 “True “以启用基于当前语言的输入和输出的本地化。

语法 –

field_name = serializers.DecimalField(*args, **kwargs)
Python

查看更多信息,请访问 – 序列化器中的数字字段 – 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被禁用,那么日期时间对象将是幼稚的。

语法 –

field_name = serializers.DateTimeField(*args, **kwargs) 
Python

DateField

DateField是一个用于表示日期的序列化字段。通常情况下,人们需要存储日期,例如在博客模型中,每篇文章的日期都需要被存储。这个字段与DateField相同 – Django模型
它有以下参数 –

  • format – 一个代表输出格式的字符串。如果没有指定,这默认为与DATE_FORMAT设置键相同的值,除非设置为’iso-8601’。设置为格式字符串表明to_representation的返回值应该被强制为字符串输出。格式化字符串在下面有描述。将此值设置为None表示Python日期对象应该由to_representation返回。在这种情况下,日期编码将由渲染器决定。
  • input_formats – 代表输入格式的字符串列表,可用于解析日期。如果没有指定,将使用DATE_INPUT_FORMATS设置,其默认值为[‘iso-8601’]。

语法 –

field_name = serializers.DateField(*args, **kwargs) 
Python

TimeField

Timefield是一个用于表示时间的序列化字段。通常情况下,人们需要存储日期,例如在博客模型中,每篇文章的时间都需要被存储。

它有以下参数 –

  • format – 一个代表输出格式的字符串。如果没有指定,这默认为与TIME_FORMAT设置键相同的值,除非设置为’iso-8601’。设置为格式字符串表明to_representation的返回值应该被强制为字符串输出。格式字符串将在下面描述。将此值设置为 None 表示 Python 时间对象应该由 to_representation 返回。在这种情况下,时间编码将由渲染器决定。
  • input_formats – 代表输入格式的字符串列表,可用于解析日期。如果没有指定,将使用TIME_INPUT_FORMATS设置,其默认值为[‘iso-8601’]。

语法 –

field_name = serializers.TimeField(*args, **kwargs) 
Python

DurationField

DurationField是一个用于表示持续时间的序列化字段。该字段与DurationField – Django Models相同。
它有以下参数 –

  • max_value 验证所提供的持续时间是否不超过这个值。
  • min_value 验证所提供的持续时间是否不低于这个值。

语法 –

field_name = serializers.DurationField(*args, **kwargs)
Python

要查看更多信息,请访问 – 序列化器中的日期和时间字段 – 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}项…”。

语法 –

field_name = serializers.ChoiceField(*args, **kwargs) 
Python

MultipleChoiceField

ChoiceField基本上是一个CharField,它根据一组从有限的选择中选出的0、1或多个值来验证输入。这个字段与MultipleChoiceField – Django Forms .NET相同。

语法 –

field_name = serializers.MultipleChoiceField(*args, **kwargs)
Python

要查看更多信息,请访问 – 序列化器中的选择字段 – 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。

语法 –

field_name = serializers.FileField(*args, **kwargs) 
Python

ImageField

ImageField是一个图像表示法。它验证上传的文件内容是否符合已知的图像格式。这与ImageField – Django forms相同。

它有以下参数 –

  • max_length – 指定文件名的最大长度。
  • allow_empty_file – 指定是否允许空文件。
  • use_url – 如果设置为True,那么URL字符串值将被用于输出表示。如果设置为False,那么文件名字符串值将被用于输出表示。默认为UPLOADED_FILES_USE_URL设置键的值,除非另行设置,否则为True。

语法 –

field_name = serializers.ImageField(*args, **kwargs)
Python

查看更多信息,请访问 – 序列器中的文件上传字段 – 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表格字段的值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册