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

网站建设 教学设计官方网站建设报价表

网站建设 教学设计,官方网站建设报价表,展示型网站建设的建议,宁波公司网页制作在前后端分离项目中#xff0c;经常需要把ORM模型转化为字典#xff0c;再将字典转化为JSON格式的字符串。在遇到sqlalchemy_serializer之前#xff0c;我都是通过类似Java中的反射原理#xff0c;获取当前ORM模型的所有字段#xff0c;然后写一个to_dict方法来将字段以及… 在前后端分离项目中经常需要把ORM模型转化为字典再将字典转化为JSON格式的字符串。在遇到sqlalchemy_serializer之前我都是通过类似Java中的反射原理获取当前ORM模型的所有字段然后写一个to_dict方法来将字段以及他的值封装成字典。大概的代码如下所示 def to_dict(self):return {c.name: str(getattr(self, c.name)) for c in self.__table__.columns}这种做法虽然一定程度上方便了开发但也是带着枷锁跳舞存在以下几个弊端 无法优雅的排除不需要序列化的字段。 无法优雅的序列化多表之间的关系。 直到后来我遇到了sqlalchemy_serializer泪流满面这不就是我苦苦寻找的ORM模型序列化库吗使用他序列化ORM模型让我带你看看有多爽! 一、安装 sqlalchemy-serializer已经上架PyPi因此通过pip命令即可安装 pip install SQLAlchemy-serializer二、基本使用 如果想要让某个ORM模型能被序列化那么只需要在定义模型的时候让他继承自sqlalchemy_serializer.SerializerMixin即可示例代码如下 from sqlalchemy_serializer import SerializerMixinclass UserModel(db.Model, SerizlizerMixin):__tablename__ userid db.Column(db.String(100), primary_keyTrue, defaultshortuuid.uuid)email db.Column(db.String(50), uniqueTrue, nullableFalse)username db.Column(db.String(50), nullableFalse)password db.Column(db.String(200), nullableFalse)SerizlizerMixin会给ORM模型添加一个to_dict方法此时你可以通过一行代码将ORM模型序列化成字典 user UserModel.query.filter(...).one() user_dict user.to_dict()上述代码中将把UsrModel中所有字段都序列化成字典。 三、排除字段 模型中有的字段不需要被序列化比如用户的密码那么这时候可以通过设置rules参数或者only参数来指定序列化规则。比如排除password那么可以通过如下代码方式实现 user UserModel.query.filter(...).one() user_dict user.to_dict(rules(-password,))上述代码中在调用to_dict方法的时候传递了rules参数并且设置了-password其中的-号代表排除的意思意思是不要序列化password。如果在绝大部分场景下都不需要某些字段可以把这个规则写在模型定义中这样所有序列化的时候都会遵循这个序列化规则。比如 class UserModel(db.Model, SerizlizerMixin):serialize_rules (-password, )__tablename__ userid db.Column(db.String(100), primary_keyTrue, defaultshortuuid.uuid)email db.Column(db.String(50), uniqueTrue, nullableFalse)username db.Column(db.String(50), nullableFalse)password db.Column(db.String(200), nullableFalse)如果需要排除的字段太多了我们可以通过设置serialize_only属性来标记仅仅序列化某些字段。比如 class UserModel(db.Model, SerizlizerMixin):serialize_only (id, username)__tablename__ userid db.Column(db.String(100), primary_keyTrue, defaultshortuuid.uuid)email db.Column(db.String(50), uniqueTrue, nullableFalse)username db.Column(db.String(50), nullableFalse)password db.Column(db.String(200), nullableFalse)上述代码在序列化的时候就只会序列化id和username两个字段了。 四、递归序列化模型和树 sqlalchemy_serializer会默认序列化定义好关系的模型比如有UserModel和PostModel两个模型 class UserModel(db.Model, SerizlizerMixin):serialize_rules (-posts,)__tablename__ userid db.Column(db.String(100), primary_keyTrue, defaultshortuuid.uuid)username db.Column(db.String(50), nullableFalse)class PostModel(db.Model, SerializerMixin):__tablename__ postid db.Column(db.String(100), primary_keyTrue, defaultshortuuid.uuid)title db.Column(db.String(100), nullableFalse)content db.Column(db.Text, nullableFalse)author_id db.Column(db.String(100), db.ForeignKey(user.id))author db.relationship(UserModel, backrefposts)在序列化PostModel的时候也会自动递归序列化author并且author的值有id和username两个字段。这里有个细节需要注意就是UserModel必须要排除posts。因为PostModel中的author字段通过backref给UserModel绑定了一个posts字段如果不排除posts那么在序列化author的时候又会序列化posts造成循环递归序列化。 五、高级用法 基本上学会以上用法后99%的场景都没有问题了。如果你在使用sqlalchemy_serializer还有其他业务需求比如格式化日期的输出、字段扁平化等那么可以再仔细阅读一下sqlalchemy_serializer的官方文档官方文档 项目中引用 将登录后数据序列化返回 序列化后的数据此时看到的跟该用户相关的评论,帖子也序列化了这就会循环序列化 可以设置仅序列化的字段
http://www.yutouwan.com/news/7936/

相关文章:

  • 做菠菜网站代理软件开发专业就业
  • seo网站关键词优化多少钱如何自己制作图片
  • 网站空间 阿里云集团公司网页设计
  • 昆明智能建站网站排名代做
  • 绵阳网站设计公司国家建筑信息管理平台
  • 深圳网站建设制作公司排名新网站关键词怎么优化
  • 网站设置快捷方式到桌面郑州影视公司有哪些
  • pc端微信端网站建设pc端网页视频怎么下载
  • 国内网站做得好的公司国内wordpress有名主题
  • 网站制作难吗网站开发评分标准
  • 做几个小网站还是做一个大网站创建虚拟网站做点击
  • 中外网站建设区别宜春做网站公司怎么样
  • 怎么查网站空间新手做网站什么类型
  • 024 网站推广电商设计的理解
  • 北京做网站的公司拟32岁学做网站
  • 霸州放心的网络建站无锡做网站要多少钱
  • 医疗设备公司的网站怎么做广州软件开发外包公司
  • 一个人做网站 知乎网站开发人员工资水平
  • 网站建设与网页设计视频wordpress设置为繁体字
  • 郑州商城网站制作织梦发布网站
  • 网站安装wordpresswordpress插件安装本地
  • 营销网站建设的因素内容营销的重要性
  • yahoo网站提交建设商务网站过程
  • 北京acc网站建设erp系统下载手机版
  • 百度站长工具后台销售人员管理方案
  • 现在网站建设都用什么语言网络服务费是什么
  • node.js做网站开发好看的个人网站设计
  • 扬中网站推广报价网站建设需求表
  • 什么网站可以做二建的题目做网站的功能结构布局
  • 杭州品牌网站建设推广做游戏网站的目地