marshmallow
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相关推荐
- android 6.0版本名字,棉花糖Marshmallow 是Android 6.0的名字
Android 6.0 五月下旬在 I/O 大会上亮相,将于今年秋天与用户见面.但是依照惯例,谷歌并没有宣布新 Android 的代号全称,而 Android M 中 M 所代表的甜品:Marshma ...
- [Python] Marshmallow QuickStart
常用小操作索引 指定fields必须:fields.String(required=True) 部分loading: 不load name:result = UserSchema.load({'ema ...
- 在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) ...
- Marshmallow 库
文章目录 Marshmallow 库 介绍 使用 序列化 反序列化 参数介绍 schema参数 fields 参数 钩子函数 内置验证器 Meta 属性 Marshmallow 库 介绍 marshm ...
- python,jsonschema, marshmallow, “None is not of type ‘string‘
1.示例代码: class TestDto(Schema):swag_in = "body" NAME = fields.String(type=["string&quo ...
- Android 6.0 Marshmallow介绍
Android 6.0 Marshmallow介绍 Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API和重点介绍您应该了解并在开发应用时加以考虑的一些 ...
- Marshmallow 快速文档
Marshmallow Todo: 正文 1. 声明schema 2. 序列化对象 -- dumping 2.1 过滤输出 -- only 3. 反序列化 -- load 4. 处理对象集合(多个对象 ...
- marshmallow库的简单学习
marshmallow库的简单学习 一.简单说明 二.创建Schema类 三.序列化和反序列化 1.定义 2.序列化 3.反序列化 4.部分序列化 5.部分反序列化(这部分应放在特殊用法) 四.数据校 ...
- 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)
用户模块 当前开发的项目属于社交类型项目,所以关于用户的信息和功能直接贯穿了整个项目.所以此处实现用户模块功能,我们先把用户基本信息构建起来,并通过基本信息实现用户注册登录相关功能,后面遇到业务再继续 ...
- Tornado 实践:基于 Peewee、Marshmallow、Aioredis 实现用户登录注册接口
1.首先看下需要的目录结构 auth_demo/ ├── apps │ ├── __init__.py │ └── public │ ├── handler.py │ ├── __init__.py ...
最新文章
- 软件测试的准入准出是什么?标准是什么?
- 大数据软件产品研发进展及挑战
- 使用 IntraWeb (31) - IntraWeb 的 Xml 操作使用的是 NativeXml
- OpenCV透视校正perspective correction的实例(附完整代码)
- centos php 开启libgdgd_CentOS6.6下yum安装PHP的gd库失败?-问答-阿里云开发者社区-阿里云...
- BZOJ1045 HAOI2008糖果传递(贪心)
- 设计模式(1)单例模式
- 警告!不要购买安桥Htx22hdx直到你读这
- Linux随笔15-Ubuntu20.04允许root用户图形界面登录、chrony局域网时间同步服务、ipxe实现系统自动化安装
- 测试手机软件打开速度的app,16个软件打开速度测试 iPhoneXS怒胜三星Note9
- 什么是云计算架构和组件
- 四足机器人--嵌入式硬件设计
- 【技术答疑】Swarm BZZ常见技术问题解答
- 充电头PD协议和QC协议的理解
- 一个人运营公众号,像是一场马拉松
- openssl bio
- 4月10日第七次CCF
- python 三维数据绘制等值高线剖面图_Matplotlib中的三维绘图
- C++语言篇 第五章 一维数组
- python千年虫问题enumerate函数
热门文章
- 期货大佬给交易者的交易箴言。
- 华为ensp模拟企业网(校园网),总分公司(总分校区),多区域互联,代码有详细注释
- 生命也如同平常到化入夏风里的蝉鸣
- 运动耳机哪些好用?专业运动耳机购买指南
- 1308:【例1.5】高精除
- Atcoder ABC162 D - RGB Triplets
- Replace Autoprefixer browsers option to Browserslist config,VUECLI3报错
- 交互媒体专题设计大作业
- 第八章第六题(代数:两个矩阵相乘的方法)(Algebra: a method of multiplying two matrices)
- 鸿蒙申请入口联系人邮箱格式不对,为什么appid输入邮箱地址不对