使用Django框架怎么实现序列化与反序列化操作

  介绍

这篇文章将为大家详细讲解有关使用Django框架怎么实现序列化与反序列化操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>序列化器类

1。定义:

Django框架中休息的序列化器使用类来定义,须继承rest_framework.serializers。序列化器。

例:

class  BookInfoSerializer (serializers.Serializer):   ,“““图书数据序列化器“,“=,,id  serializers.IntegerField(标签=& # 39;id # 39;,, read_only=True)=,,name  serializers.CharField(标签=& # 39;名称& # 39;,,max_length=20)=,,pub_date  serializers.DateField(标签=& # 39;发布日期& # 39;,,需要=False)=,,readcount  serializers.IntegerField(标签=& # 39;阅读量& # 39;,,需要=False)=,,commentcount  serializers.IntegerField(标签=& # 39;评论量& # 39;,,需要=False)=,,image  serializers.ImageField(标签=& # 39;图片& # 39;,,需要=False)

2。字段与选项:

常用字段类型:

字段字段构造方式BooleanFieldBooleanField () NullBooleanFieldNullBooleanField () CharFieldCharField (max_length=None, min_length=None, allow_blank=False, trim_whitespace=True) EmailFieldEmailField (max_length=None, min_length=None, allow_blank=False) RegexFieldRegexField (regex max_length=None, min_length=None, allow_blank=False) SlugFieldSlugField(最大长度=50,min_length=None, allow_blank=False)正则字段,验证正则模式[a-zA-Z0-9 -] + URLFieldURLField (max_length=200, min_length=None, allow_blank=False) UUIDFieldUUIDField(格式=' hex_verbose& # 39;)格式:1)IPAddressFieldIPAddressField(协议='两个# 39;unpack_ipv4=False, * *选项)IntegerFieldIntegerField (max_value=https://www.yisu.com/zixun/None, min_value=None) FloatFieldFloatField (max_value=None, min_value=None) DecimalFieldDecimalField (max_digits、decimal_places coerce_to_string=None, max_value=None, min_value=None) max_digits:最多位数decimal_palces:小数点位置DateTimeFieldDateTimeField(格式=api_settings。DATETIME_FORMAT input_formats=None)=api_settings DateFieldDateField(格式。DATE_FORMAT input_formats=None)=api_settings TimeFieldTimeField(格式。TIME_FORMAT input_formats=None) DurationFieldDurationField () ChoiceFieldChoiceField(选择)的选择与Django的用法相同MultipleChoiceFieldMultipleChoiceField(选择)FileFieldFileField (max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL) ImageFieldImageField (max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL) ListFieldListField(孩子=in_length=没有,max_length=None) DictFieldDictField(孩子=)

选项参数:

参数名称作用max_length最大长度min_lenght最小长度allow_blank是否允许为空trim_whitespace是否截断空白字符max_value最大值min_value最小值

通用参数:

参数名称说明read_only表明该字段仅用于序列化输出,默认Falsewrite_only表明该字段仅用于反序列化输入,默认Falserequired表明该字段在反序列化时必须输入,默认Truedefault反序列化时使用的默认值allow_null表明该字段是否允许传入,默认Falsevalidators该字段使用的验证器error_message包含错误编号与错误信息的字典标签用于HTML展示API页面时,显示的字段名称help_text用于HTML展示API页面时,显示的字段帮助提示信息

3。序列化对象:

构造方法:

序列化器(数据实例,,,,* * kwarg)

(1)用于序列化时,将模型类对象传参入实例数
(2)用于反序列化时,将要被反序列化的数据传参入数据数
(3)除了实例和数据参数外,在构造序列化器对象时,还可通过上下文参数额外,添加数据。

例:

serializer =, AccountSerializer(账户,,上下文={& # 39;请求# 39;:,请求})

通过上下文参数附加的数据,可以通过序列化器对象的上下文属性获取。

序列化

1。基本使用:

(1)查询对象:
例:

得到book.models  import  BookInfo   时间=book  BookInfo.objects.get (id=4), #,单个对象   时间=books  BookInfo.objects.all(), #,多个对象

(2)构造序列化对象:

得到book.serializers  import  BookInfoSerializer   时间=serializer  BookInfoSerializer(书),#,单个对象   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Django框架怎么实现序列化与反序列化操作