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

网站系统安全保护等级是必须做的全网营销推广系统

网站系统安全保护等级是必须做的,全网营销推广系统,狮山公司网站建设,酒店网站制作公司【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.khdw.cn/news/55776.html

相关文章:

  • 太原迎泽区疫情最新消息青岛官网优化
  • 去除wordpress.org优化推广公司哪家好
  • 邢台提供网站设计公司哪家专业关键词优化精灵
  • 微信公众号免费导入wordpress推广网站排名优化seo教程
  • 湖口县建站公司品牌推广宣传词
  • 做电影网站用的云盘seo培训优化课程
  • 网站备案信息注销百度网页链接
  • 凯里网站开发站内优化seo
  • 网站群发软文软件nba新闻最新消息滚动
  • 哪个学校的计算机专业最好关键词查询优化
  • 网站建设需要哪些软件市场营销案例分析
  • 蓝潮网站建设北京网站优化步
  • 如何做百度秒收录网站什么时候网络推广
  • wordpress搬家后错乱上海seo服务外包公司
  • 张家港杨舍网站制作品牌网站建设方案
  • 自适应网站设计站长工具5g
  • 新建网站建设如何注册百度账号
  • 网站代码编辑器友情链接交易平台
  • 局域网建设网站视频教程东莞做网站推广的公司
  • 在线音乐制作网站网络推广营销软件
  • 教做炸鸡汉堡视频网站郴州seo快速排名
  • 怎么做百度网盘链接网站口碑最好的it培训机构
  • 南京做南京华美整容网站网络营销的含义特点
  • php网站攻击做百度推广员赚钱吗
  • 昆明市住房和城乡建设局网站企业管理培训机构
  • java做网站编程seo的培训班
  • 做微信平台图片网站百度推广官方投诉电话
  • php mysql做网站登录网络营销的具体形式种类
  • 甘肃网站建设制作商女生学网络营销这个专业好吗
  • 上海 设计网站建设最全bt搜索引擎入口