Flask-RESTful 框架 为我们定义好了一个 reqparse模块,用来 对传入来的数据进行验证。
# 1、创建一个请求解析对象 parser = reqparse.RequestParser() # 2、添加要验证的字段 parser.add_argument("name", type=str, location="args") parser.add_argument("age", type=int, location="args") # 3、验证 传入的数据 是否和 要验证的字段 类型 一致 并返回结果 data = parser.parse_args()
-
location参数
request可以如何获取数据 location就可以有多少值
- 获取?后参数 args • - 获取form表单数据 form • - 获取json数据 json • - 获取请求头数据 headers • - 获取cookie cookies • - 获取文件 files
-
required参数
required=True 默认是False 不是必须的 如果找不到 值就None
如果没有传递这个 参数 则就会报错
{ "message": { "session_id": "Missing required parameter in the request's cookies" } }
-
action参数
如果请求 参数 有多个,有两种处理方式
一种 是 store 表示 只保留第一个 第二个不要 默认就是这种
第二种 是 append 追加,把多个 放如列表中,都要
parse = reqparse.RequestParser() parse.add_argument("username", location="form", action="append")
-
help参数
使用help 可以添加 自定义错误提示
parse.add_argument('session_id', location='cookies', required=True, help="cookie找不到")2、返回响应结果
我们也可以 格式化响应的内容,就是 对响应内容 做序列化
-
使用marshal方法
marshal方法提供了基本的参数
marshal(data, ser_fields, envelope="data")
参数1: 要序列化的所有数据 data可以是字典类型 也可以是一个 实例对象
参数2:定义哪些字段参与序列化,一级要把对应字段转成什么类型
参数3:要不要使用一个key来包裹我们的返回内容
ser_fields = { "username": fields.String, "password": fields.String, "age": fields.Integer }
{ "data": { "username": "刘备", "password": "123", "age": 55 } }
-
使用装饰器marshal_with
我们也可以使用装饰器 marshal_with 来对返回的对象 进行 序列化输出
ser_fields = { "name": fields.String, "price": fields.Integer } class Book: def __init__(self, name, price, author): self.name = name self.price = price self.author = author class HelloResource(Resource): @marshal_with(ser_fields, envelope='data') def get(self): book = Book("python开发", 88, "凡老师") return book 二、ORM
ORM(Object Relational Mapping) 对象关系映射
我们使用ORM就可以 *** 作对象的形式 *** 作 表
1、ORM介绍ORM又称"对象关系映射", 即Object Relation Mapping. 那到底什么是"对象关系映射" Django框架中: 模型类 <---> 表 属性 <---> 字段 对象 <---> 记录 ORM优势与缺点 # 优势: (2).省去自己拼写SQL,保证SQL语法的正确性 (3).一次编写可以适配多个数据库 (4).防止注入攻击 (5).在数据库表名或字段名发生变化时,只需修改模型类的映射,无需修改数据库 *** 作的代码(相比SQL的话,可能需要同步修改涉及到的每一个SQL语句) # 缺点: 执行效率低下
2、
扩展1:
声明如果我们需要List 这周列表 或者 字典 {} 应该怎么做
ser_fields = { "username": fields.List, "password": fields.String }2、Flask-SQLAlchemy
-
下载模块
pip install flask-sqlalchemy
我们一般都是连接的mysql,所以你要确保已经安装了
mysql的python驱动
-
使用create_all()方法
我们先通过交互的形式,把Model类 映射到数据表
(tengfei) E:workspace20212103Pro02_orm>python >>>db.create_all()
执行完这个脚本 会发现 数据库中会多Model类对应的表
3、添加数据要使用db对象,然后session会话 add方法 添加 实例
db.session.add(Book("2221","hello")) db.session.add(Book("2222","goods"))
可以连续添加多个
现在 是没有真正的添加到数据库 还在会话中,需要提交
db.session.commit()4、查询数据
查询 *** 作是
-
查询所有是
books = Book.query.all()
-
条件查询
Book.query.filter_by(name='hello').first()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)