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

化妆品网站开发流程和进度安排wordpress页面编辑器

化妆品网站开发流程和进度安排,wordpress页面编辑器,网站百度搜索情况和反链接优化建议,扬中人才【django framework】ModelSerializerGenericAPIView,如何在提交前修改某些字段值 我们经常会遇到下面这种情况: 序列化器用的是ModelSerializer,写视图的时候继承的是generics.CreateAPIView。现在我想在正式提交到数据库(perform_create)之…

【django framework】ModelSerializer+GenericAPIView,如何在提交前修改某些字段值

我们经常会遇到下面这种情况:
序列化器用的是ModelSerializer,写视图的时候继承的是generics.CreateAPIView。现在我想在正式提交到数据库(perform_create)之前,修改几个字段的值,应该怎么去做呢?


在这里插入图片描述


目录

  • 【django framework】ModelSerializer+GenericAPIView,如何在提交前修改某些字段值
  • 1 在Serializer序列化器中重写create
  • 2 继承generics.CreateAPIView后,重写perform_create()


1 在Serializer序列化器中重写create

我们知道序列化器承担了部分视图的作用,但是它主要的作用有两个:
对序列化进来的数据进行校验,比如validate一下手机号格式是不是正确
写入一些默认或者不需要前端传递的字段
// 如果说执意要在Serializer中写业务逻辑,也可以。只不过这种写法会和rest_framework的设计理念相违背,增加了序列化器和视图的耦合性

from rest_framework import serializers
from .models import *
import reclass YourModelSerializer(serializers.ModelSerializer):"""YourModel 创建 序列化器"""class Meta:model = YourModelfields = '__all__'def validate(self, kwargs):"""校验校验前端传过来的用户手机号格式对不对"""MOBILE = kwargs.get('mobile').mobileREGEX_MOBILE = '1[3475698]\d{9}$|^147\d{8}$|^176\d{8}|^198\d{8}$'# 客户手机号格式if not re.match(REGEX_MOBILE, MOBILE):raise serializers.ValidationError("客户手机号格式有误")return kwargsdef create(self, validated_data):"""重写create方法// 添加唯一序列号序列号不需要前端传递"""# 唯一序列号validated_data['serial'] = 'serial102356478'# 可以在此写业务逻辑,但是并不推荐return super().create(validated_data)

2 继承generics.CreateAPIView后,重写perform_create()

秉承着谁的活由谁来干的原则,第一种方法虽然可行,但是增加了序列化器与视图之间的耦合性,所以并不是一个好方法。
所以我们通过重写perform_create()方法来修改我们想要修改的字段
而视图本就是写业务逻辑的,这也符合rest_framework设计初衷。

from rest_framework import generics
from .models import YourModel
from .serializers import YourModelSerializerclass YourModelCreateAPIView(generics.CreateAPIView):queryset = YourModel.objects.all()serializer_class = YourModelSerializerdef perform_create(self, serializer):# 获取需要修改的字段的值some_field_value = serializer.validated_data.get('field_name')# 修改字段的值modified_field_value = some_field_value + '_modified'# 更新字段的值serializer.validated_data['some_field'] = modified_field_value# 继续调用serializer的save方法保存对象serializer.save()

如此,即完成了功能,又不破坏框架功能模块间的耦合性,而代码的质量也由此而提升,皆大欢喜。

http://www.yayakq.cn/news/689474/

相关文章:

  • 建筑型专业网站有哪些造价人员做兼职的网站
  • 部队网站建设招标东莞有什么好玩的地方
  • 如何制作网站主页唐山seo公司
  • 湖北建设厅网站国外的网站建设
  • 周口网站设计做网站的时候字体应该多大
  • 大网站是用什么做html5的成全高清视频免费观看
  • .net网站开发文档网站谷歌seo做哪些
  • 微微网站建设继续接入备案 增加网站 区别
  • 邳州微网站开发百度云建网站
  • 汽车公司网站建设如何做收费会员定制网站
  • 网站开发用php还是python网站设计程序
  • dede网站安全wordpress帐号导入
  • 网站排名优化平台仿煎蛋 wordpress
  • 让人做网站 需要准备什么北京网站快速优化排名
  • 四川网站建设找珊瑚云织梦建站教程视频
  • 电子商务网站开发主要实现功能扬州建设工程招聘信息网站
  • 如何 建公司网站如何去掉wordpress
  • 网站建设信 信科网络WordPress最好用编辑器
  • 没有网站怎么做cpa赚钱甘肃seo优化
  • 太原免费建站无锡网站建设网
  • 设计素材网站模板世界互联网公司排名
  • 免费注册购物网站南通城乡住房建设厅网站首页
  • 网站建设都有什么工作要做中关村手机之家官网
  • 算命网站做竞价赚钱亚马逊关键词排名查询工具
  • 站长工具seo综合查询网全屋设计的软件
  • 无锡高端网站建设全景效果图如何制作
  • wordpress子域名网站wordpress和帝国区别
  • 做网站都需要了解什么自己做网站申请域名
  • 做购物网站步骤产品网站定制
  • 深圳市罗湖区住房和建设局网站极速网站建设定制价格