Marshmallow

 Marshmallow包的使用

from marshmallow import Schema, fieldsdef validate_data(schema: Schema, data: dict, remove_blank=False):"""schema验证,验证成功返回数据,验证失败返回错误信息Parameters----------schema:Schema: 验证规则data: 验证数据remove_blank : 是否去除空白字段Returns (data,errors)"""d = {}if remove_blank:for k, v in data.items():if v != "":d[k] = velse:d = datadata, errors = schema.load(d)if errors:abort(400, errors)return dataclass PageSchema(Schema):"""继承这个类,传入的数据会自动按规则进行处理"""page = fields.Int(missing=1)page_size = fields.Int(missing=10, validate=lambda n: 1 <= n <= 100)created__gte = fields.Float()created__lte = fields.Float()page_schema = PageSchema()class ListAPI(Resource):def get(self):result = validate_data(page_schema, request.args)

marshmallow-sqlalchemy

from flask import request
from flask_restful import Resource, abort, reqparse
# marshmallow-sqlalchemy 这个模块和sqlalchemy联合使用
from marshmallow_sqlalchemy import ModelSchema
from src.main import dbclass TestSchema(ModelSchema):"""首先创建一个序列化数据的类"""class Meta:model = Testsqla_session = db.session # 序列化单个数据的对象
test_schema = MailTemplateSchema()
# 序列化多个数据的对象
tests_schema = MailTemplateSchema(many=True)class TestAPI(Resource):def get(self):# 下面的方法可以直接接受到request.args中的数据# 也就是url中?后面的数据# 可以对数据值和数据类型进行处理parser = reqparse.RequestParser()parser.add_argument("page", type=int, default=1, location="args")parser.add_argument("page_size", type=int, default=10, location="args")parser.add_argument("name", type=str, location="args")queryset = Test.queryif merchant:queryset = queryset.filter_by(merchant=merchant)# sqlalchemy中自带的分页系统pagination = queryset.paginate(page=page,per_page=page_size, error_out=False)return {# 查询结果总数"count": pagination.total,# 查询总页数"pages": pagination.pages,# 当前页"page": pagination.page,# 每页数据数"page_size": pagination.per_page, # 直接将数据查询结果对象序列化成字典# 注意这里的结果是多个对象"results":tests_schema.dump(pagination.items).data,}def post(self):# 将字典反序列化为对象test, errors=test_schema.load(request.json)if errors:abort(400, errors)db.session.add(test)db.session.commit()return test_schema.dump(test).data

marshmallow相关推荐

  1. android 6.0版本名字,棉花糖Marshmallow 是Android 6.0的名字

    Android 6.0 五月下旬在 I/O 大会上亮相,将于今年秋天与用户见面.但是依照惯例,谷歌并没有宣布新 Android 的代号全称,而 Android M 中 M 所代表的甜品:Marshma ...

  2. [Python] Marshmallow QuickStart

    常用小操作索引 指定fields必须:fields.String(required=True) 部分loading: 不load name:result = UserSchema.load({'ema ...

  3. 在Android 6.0 Marshmallow(API 23)上弃用了getColor(int id)

    本文翻译自:getColor(int id) deprecated on Android 6.0 Marshmallow (API 23) The Resources.getColor(int id) ...

  4. Marshmallow 库

    文章目录 Marshmallow 库 介绍 使用 序列化 反序列化 参数介绍 schema参数 fields 参数 钩子函数 内置验证器 Meta 属性 Marshmallow 库 介绍 marshm ...

  5. python,jsonschema, marshmallow, “None is not of type ‘string‘

    1.示例代码: class TestDto(Schema):swag_in = "body" NAME = fields.String(type=["string&quo ...

  6. Android 6.0 Marshmallow介绍

    Android 6.0 Marshmallow介绍 Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API和重点介绍您应该了解并在开发应用时加以考虑的一些 ...

  7. Marshmallow 快速文档

    Marshmallow Todo: 正文 1. 声明schema 2. 序列化对象 -- dumping 2.1 过滤输出 -- only 3. 反序列化 -- load 4. 处理对象集合(多个对象 ...

  8. marshmallow库的简单学习

    marshmallow库的简单学习 一.简单说明 二.创建Schema类 三.序列化和反序列化 1.定义 2.序列化 3.反序列化 4.部分序列化 5.部分反序列化(这部分应放在特殊用法) 四.数据校 ...

  9. 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)

    用户模块 当前开发的项目属于社交类型项目,所以关于用户的信息和功能直接贯穿了整个项目.所以此处实现用户模块功能,我们先把用户基本信息构建起来,并通过基本信息实现用户注册登录相关功能,后面遇到业务再继续 ...

  10. Tornado 实践:基于 Peewee、Marshmallow、Aioredis 实现用户登录注册接口

    1.首先看下需要的目录结构 auth_demo/ ├── apps │ ├── __init__.py │ └── public │ ├── handler.py │ ├── __init__.py ...

最新文章

  1. 软件测试的准入准出是什么?标准是什么?
  2. 大数据软件产品研发进展及挑战
  3. 使用 IntraWeb (31) - IntraWeb 的 Xml 操作使用的是 NativeXml
  4. OpenCV透视校正perspective correction的实例(附完整代码)
  5. centos php 开启libgdgd_CentOS6.6下yum安装PHP的gd库失败?-问答-阿里云开发者社区-阿里云...
  6. BZOJ1045 HAOI2008糖果传递(贪心)
  7. 设计模式(1)单例模式
  8. 警告!不要购买安桥Htx22hdx直到你读这
  9. Linux随笔15-Ubuntu20.04允许root用户图形界面登录、chrony局域网时间同步服务、ipxe实现系统自动化安装
  10. 测试手机软件打开速度的app,16个软件打开速度测试 iPhoneXS怒胜三星Note9
  11. 什么是云计算架构和组件
  12. 四足机器人--嵌入式硬件设计
  13. 【技术答疑】Swarm BZZ常见技术问题解答
  14. 充电头PD协议和QC协议的理解
  15. 一个人运营公众号,像是一场马拉松
  16. openssl bio
  17. 4月10日第七次CCF
  18. python 三维数据绘制等值高线剖面图_Matplotlib中的三维绘图
  19. C++语言篇 第五章 一维数组
  20. python千年虫问题enumerate函数

热门文章

  1. 期货大佬给交易者的交易箴言。
  2. 华为ensp模拟企业网(校园网),总分公司(总分校区),多区域互联,代码有详细注释
  3. 生命也如同平常到化入夏风里的蝉鸣
  4. 运动耳机哪些好用?专业运动耳机购买指南
  5. 1308:【例1.5】高精除
  6. Atcoder ABC162 D - RGB Triplets
  7. Replace Autoprefixer browsers option to Browserslist config,VUECLI3报错
  8. 交互媒体专题设计大作业
  9. 第八章第六题(代数:两个矩阵相乘的方法)(Algebra: a method of multiplying two matrices)
  10. 鸿蒙申请入口联系人邮箱格式不对,为什么appid输入邮箱地址不对