当前位置: 首页 > news >正文

湖北公司网站建设多少钱友情链接推广平台

湖北公司网站建设多少钱,友情链接推广平台,wordpress add_meta_box,国外的有趣设计网站1.3.3 模型类序列化器 如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。 ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成一系列…

1.3.3 模型类序列化器

如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。

ModelSerializer与常规的Serializer相同,但提供了:

  • 基于模型类自动生成一系列字段
  • 基于模型类自动为Serializer生成validators,比如unique_together
  • 包含默认的create()和update()的实现
1.3.3.1 定义

比如我们创建一个BookInfoSerializer

class BookInfoSerializer(serializers.ModelSerializer):"""图书数据序列化器"""class Meta:model = BookInfofields = '__all__'
  • model 指明参照哪个模型类
  • fields 指明为模型类的哪些字段生成

我们可以在python manage.py shell中查看自动生成的BookInfoSerializer的具体实现

>>> from booktest.serializers import BookInfoSerializer
>>> serializer = BookInfoSerializer()
>>> serializer
BookInfoSerializer():id = IntegerField(label='ID', read_only=True)btitle = CharField(label='名称', max_length=20)bpub_date = DateField(allow_null=True, label='发布日期', required=False)bread = IntegerField(label='阅读量', max_value=2147483647, min_value=-2147483648, required=False)bcomment = IntegerField(label='评论量', max_value=2147483647, min_value=-2147483648, required=False)image = ImageField(allow_null=True, label='图片', max_length=100, required=False)
1.3.3.2 指定字段

\1) 使用fields来明确字段,__all__表名包含所有字段,也可以写明具体哪些字段,如

class BookInfoSerializer(serializers.ModelSerializer):"""图书数据序列化器"""class Meta:model = BookInfofields = ('id', 'btitle', 'bpub_date')

\2) 使用exclude可以明确排除掉哪些字段

class BookInfoSerializer(serializers.ModelSerializer):"""图书数据序列化器"""class Meta:model = BookInfoexclude = ('image',)

\3) 显示指明字段,如:

class HeroInfoSerializer(serializers.ModelSerializer):hbook = BookInfoSerializer()class Meta:model = HeroInfofields = ('id', 'hname', 'hgender', 'hcomment', 'hbook')

\4) 指明只读字段

可以通过read_only_fields指明只读字段,即仅用于序列化输出的字段

class BookInfoSerializer(serializers.ModelSerializer):"""图书数据序列化器"""class Meta:model = BookInfofields = ('id', 'btitle', 'bpub_date', 'bread', 'bcomment')read_only_fields = ('id', 'bread', 'bcomment')
1.3.3.3 添加额外参数选项

我们可以使用extra_kwargs参数为ModelSerializer添加或修改原有的选项参数

class BookInfoSerializer(serializers.ModelSerializer):"""图书数据序列化器"""class Meta:model = BookInfofields = ('id', 'btitle', 'bpub_date', 'bread', 'bcomment')extra_kwargs = {'bread': {'min_value': 0, 'required': True},'bcomment': {'min_value': 0, 'required': True},}# BookInfoSerializer():
#    id = IntegerField(label='ID', read_only=True)
#    btitle = CharField(label='名称', max_length=20)
#    bpub_date = DateField(allow_null=True, label='发布日期', required=False)
#    bread = IntegerField(label='阅读量', max_value=2147483647, min_value=0, required=True)
#    bcomment = IntegerField(label='评论量', max_value=2147483647, min_value=0, required=True)

1.4 局部全局校验源码分析

#is_valid---->self.run_validation-(执行Serializer的run_validation)-->self.to_internal_value(data)---(执行Serializer的run_validation:485行)

image

image

1.5 序列化组件源码分析

序列化组件,先调用__new__方法,如果many=True,生成ListSerializer对象,如果为False,生成Serializer对象
序列化对象.data方法--调用父类data方法---调用对象自己的to_representation(自定义的序列化类无此方法,去父类找)
Aerializer类里有to_representation方法,for循环执行attribute = field.get_attribute(instance)
再去Field类里去找get_attribute方法,self.source_attrs就是被切分的source,然后执行get_attribute方法,source_attrs
当参数传过去,判断是方法就加括号执行,是属性就把值取出来
http://www.dinnco.com/news/21128.html

相关文章:

  • 江门网站设计模板武汉seo霸屏
  • 免费发布信息的网站平台有哪些网站整站优化推广方案
  • 网站做3年3年包括什么软件吗成都网站快速排名提升
  • 学生管理系统网站百度的网址是什么
  • 做外贸的人如何上国外网站网络最有效的推广方法
  • 丰台做网站上海seo排名
  • 南宁免费建站系统谷歌seo关键词排名优化
  • 全面的郑州网站建设seo站内优化教程
  • 树莓派3b 做网站服务器重庆高端品牌网站建设
  • 下载并安装百度地图正规优化公司哪家好
  • do_action wordpress 模板广州网络优化最早的公司
  • 网页建站工具百度官网认证免费
  • 电子商务网站建设pdf营销型网站优化
  • 阿里云做的网站怎么样宣传推广计划怎么写
  • 做管理信息的网站吗加速游戏流畅的软件
  • php做的网站用什么后台广州做seo公司
  • wordpress 更新版本百度seo按天计费
  • 泰安网站建设电话数字营销策略有哪些
  • 全国今日最新疫情seo推广骗局
  • wordpress vip 插件下载郑州网站建设优化
  • 深装总建设集团股份有限公司淘宝seo对什么内容优化
  • 织梦xml网站地图优化关键词排名推广
  • 网站开发技巧网络营销师报考条件
  • 在线阅读小说网站怎么做网站百度
  • 手机app微信网站建设百度快速排名提升
  • web service做网站个人如何注册网站
  • 企业网站备案名称窍门广州百度seo公司
  • 在建设部网站上的举报链接怎么做
  • 外贸网站建设公司 迅当网公司网络推广营销
  • 自适应网站建设多少钱快手流量推广网站