前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask 学习-71.Flask-RESTX 枚举类型Enum字段

Flask 学习-71.Flask-RESTX 枚举类型Enum字段

作者头像
上海-悠悠
发布2022-09-27 16:59:55
7000
发布2022-09-27 16:59:55
举报
文章被收录于专栏:从零开始学自动化测试

前言

model 中枚举类型字段使用示例

模型设计

代码语言:javascript
复制
class Teachers(db.Model):
    __tablename__ = 'teacher'  # 数据库表名
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), unique=True, nullable=False)
    size = db.Column(db.Enum("SMALL", "MEDIUM", "LARGE"), default="MEDIUM")
    address = db.Column(db.String(150), nullable=True)

    def save(self):
        """保存数据"""
        db.session.add(self)
        db.session.commit()

    def __repr__(self):
        return f"<Teachers(id='{self.id}', name='{self.name}'...)>"

同步到数据库

代码语言:javascript
复制
flask db migrate
flask db upgrade

同步后数据库里面可以看到 size 字段是枚举类型

校验枚举类型

请求入参校验枚举类型, 添加enum 参数

代码语言:javascript
复制
teacher_model = api.model('TeacherModel', {
    'name': fields.String(
        max_length=50, required=True, description='姓名'),
    'size': fields.String(
        enum=["SMALL", "MEDIUM", "LARGE"], required=False, description='型号'),
    'address': fields.String(max_length=150, description='邮箱')
})

视图

代码语言:javascript
复制
@api.route('/teacher')
class TeacherView(Resource):

    @api.doc(description='新增老师')
    @api.marshal_with(teacher_model)
    @api.expect(teacher_model, validate=True)
    def post(self):
        """
            add teacher
        """
        api.logger.info(f"获取请求参数: {api.payload}")
        t = Teachers(
                name=api.payload.get('name'),
                size=api.payload.get('size'),
                address=api.payload.get('address'),
            )
        t.save()  # 保存数据
        return t, HTTPStatus.CREATED

测试接口

代码语言:javascript
复制
POST http://127.0.0.1:5000/api/v1/teacher HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1:5000
Content-Length: 33
Content-Type: application/json

{"name": "yoyo", "size": "SMALL"}

HTTP/1.0 201 CREATED
Content-Type: application/json
Content-Length: 65
Server: Werkzeug/2.0.2 Python/3.8.5
Date: Thu, 22 Sep 2022 01:22:52 GMT

{
    "name": "yoyo",
    "size": "SMALL",
    "address": null
}

参数不合法,返回400 BAD REQUEST

2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 模型设计
  • 校验枚举类型
    • 报名费:报名费3000一人(周期3个月)
      • 联系微信/QQ:283340479
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档