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

海口哪里做网站公司网站建设背景分析论文

海口哪里做网站公司,网站建设背景分析论文,传奇辅助网站怎么做,免费网站下载直播软件Django rest_framework Serializer中的create、Views中的create/perform_create的区别 对于后端来说#xff0c;前后端分离的方式能让前后端的开发都爽。和所有的爽一样#xff0c;每爽一次都要付出一定的代价。而前后端分离的代价#xff0c;就是后端要面对巨量的模块化的功…Django rest_framework Serializer中的create、Views中的create/perform_create的区别 对于后端来说前后端分离的方式能让前后端的开发都爽。和所有的爽一样每爽一次都要付出一定的代价。而前后端分离的代价就是后端要面对巨量的模块化的功能组件以及这些组件的常规用法与重写复用。有一点经验关于[Django rest_framework ] Serializer中的create()、Views中的create()/perform_create()的区别希望与诸君共讨之。 1 Serializer 序列化器 1.1 Serializer作用 序列化器是rest_framework 其中的一个组件它有两个功能 序列化把python中的对象转成json/xml格式字符串。这里的对象指的是数据库对象因为rest_framework 用的ORM来操作数据库。它的功能直观上是将数据库里面的数据通过接口传递到前端因为使用ORM的缘故从数据库到接口数据转换的过程被描述成序列化其实更准确的描述应该是[可传输化]或者[转化为可以被前端直接使用的数据类型]这样更便于理解。反序列化把json/xml格式字符串转成python中的对象。从功能上来说反序列化是序列化的逆过程。但同样的从英语到汉语直译的方式总会带来各种理解上的障碍。更准确地描述应该是[字符串对象化]或者[可存储化]。 和前后端不分离相比Serializer承担了一部分views 2.2 Serializer中的create 序列化()的过程一般是read操作绝大多数情况下应该不涉及使用create()。所以Serializer重写create()的情况只能是反序列化(字符串----数据库)也就是将接口数据保存到数据库中。 Serializers中的create()方法 from rest_framework import serializersclass MyModelSerializer(serializers.ModelSerializer):一个序列化器class Meta:model MyModelfields __all__# Serializers中的create()方法def create(self, validated_data):## your codereturn super().create(validated_data)上面的这一小段代码是一个典型的序列化器在这里我们重写了Serializer的create()。可以看到在这里的create()方法有一个validated_data参数这意味着什么呢我想聪明的你已经猜到了答案即这个数据是从前端传过来并且已经过了验证(valide)。经过了谁的验证呢没错是Serializer。可能许多人还记得Serializer提供了很多字段类似models中的字段当时我还在想我说这玩意儿是用来干嘛的呢。现在回首我想很多人像我一样也已豁然开朗。记着永远不要忘记Serializer的功能。举个例子 from rest_framework import serializersclass MyModelSerializer(serializers.ModelSerializer):一个序列化器class Meta:model MyModelfields __all__# Serializers中的create()方法def create(self, validated_data):## your codereturn super().create(validated_data)# 定义的一个字段my_bool BooleanField()上面我定义了一个字段my_bool 。这个字段可接受的值是一个布尔值0/1。如果传其他值则会报错。那么很明显的Serializer中重写create()方法的作用已然显现对Serializer已校验的前端入参进行二次处理。默认情况下serializer处理结束后将会返回一个示例instance给视图(这一点存疑)。 到此Serializer的作用应该是结束了。 2 Views 视图 Serializer将校验成功的数据给到viewsviews拿到数据之后用来做持久化。 2.1 views中的create()与perform_create() 在views中你可以重写create()并通过request.GET/request.POS/request.data拿到从前端传过来并经过Serializer规则校验的数据。 拿到之后呢你可以对这些数据再次进行处理或者将它作为调用其它接口的入参(这就是传说中的对其它系统的接口进行二次封装)。 视图中的create()与序列化器中的create()有一个巨大的区别是视图中的create()可以调用perform_create()进行持久化。这很棒棒因为后端开发说白了就是对数据库进行增删改查(撇开使用不同框架的差异)而增删改查的难易程度事实上取决于你要解决的问题即实际具体业务的复杂程度。 3 总结一下 Serializer主要是和前端打交道so基于这一点你重写Serializer的create()本质是为了过滤。如果通过了校验并且满足你的要求那么它会到视图中做下一步处理(通过过滤)反之将会给前端反馈一些提示信息过去(被过滤)。Views则相反Views主要和后端打交道你重写Views的create()本质是为了持久化。在持久化之前你可以对入参做任何符合实际情况的处理(包括调用其它接口)但是因为是POST/create()最终你还是要持久化(perform_create())。 以上 。
http://www.dnsts.com.cn/news/74558.html

相关文章:

  • 有没有在家做的手工活网站麋鹿 wordpress
  • 园林网站免费模板沈阳网站建设教案模板
  • 网站建设功能需求表怎么做自动提卡网站
  • 北京兼职网站建设中文wordpress网站模板
  • 洛阳网站建设制作多少钱一起做业网站登录
  • 网站配色绿色英语培训网站建设
  • 开发一个网站成本阿里云wordpress建站
  • 深圳高端网站设计开发广州网络营销公司排名
  • 猎场第几集做的网站推广wordpress 静态链接
  • 甘肃省建设厅门户网站wordpress static配置
  • wordpress qode怎样做seo网站链接
  • 58同城泉州网站建设义乌本地网站开发
  • 清廉桂林网站化妆品网站制作需要
  • 网站建设 福步 2018读书分享会ppt模板免费下载
  • 怎么建设电影网站wordpress的点商
  • 机房建设 网站网站 设计理念
  • 宁德公司做网站wordpress缺少临时文件夹
  • 丽水市做网站的网站推广优化教程
  • 棠下手机网站建设报价wordpress腾讯云cos
  • 淘宝网站优化实例软件外包是什么意思
  • 网上做网站网站花都网站建设公司怎么样
  • 网络营销策划过程搜索引擎优化的完整过程
  • 网站制作项目执行中山祥云网站建设
  • 微设计公司网站合肥广告牌制作公司
  • 建设网站运营成本wordpress search标签页
  • 电子商务网站建设与规划案例网站上面的内容里面放照片怎么做
  • 网站建设与优化标准苏州保洁公司多少钱一个平方
  • 静态网站开发常用语言网站开发系统搭建
  • 工业做网站wordpress采集免费版下载
  • 黄石网站设计西安有什么网站