Flask蓝图与插件

510 阅读3分钟

一、插件与蓝图

  • flask中的配置文件

    flask中的配置文件是放在app.config,可以像操作字典一样进行操作

  • 直接编写

    直观,简单

    将常见的一些固定不变的配置写入

  • 配置文件

  • 配置类

    推荐使用 配置类

二、蓝图

Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用, Flask 可以通过Blueprint来组织URL以及处理请求

Flask使用Blueprint让应用实现模块化

  • 创建蓝图步骤
    1. 创建蓝图文件,里面需要包含两个文件 init文件 view文件

    2. 先在init文件中创建蓝图对象, 导入view视图(导包from flask import Blueprint)

    3. 在view视图里导入蓝图对象,进行业务操作

    4. 最后把蓝图对象注册到应用app中

三、flask-script

flask-script是第三方的提供的插件(交互式插件),可以使用这个插件完成项目的管理,添加命令

  • 安装插件

    pip install flask script

  • 使用插件

    # 导入类
    from flask_script import Manager
    
    # 管理App
    manager = Manager(app)
    
    if __name__ == '__main':
        manager.run()
    
  • 安装命令

    # 导入包
    from flask_script import Manager,Command
    
    # 管理app
    manager = Manager(app)
    
    
    # 创建类继承Command
    class MyRunserver(Command):
        def run(self):
            app.run(host="0.0.0.0",post=8899)
            
    # 注册命令
    manager.add_command("myrun",MyRunserver)
    

四、flask-migrate

flask要完成数据迁移任务,使用的命令create_all方法,creat_all有很大的局限性,flask可以使用flask-migrate插件完成数据的迁移

  • 安装

    pip install flask-migrate

  • 使用

    项目的__ init __.py文件

# 导入包
from flask_migrate import Migrate

# 创建空的对象
migrate = Migrate

# 管理数据库
migrate.init_app(app,db)
  • 安装命令

    # 导包
    from flask_migrate import MigrateCommand
    
    # 注册migrate命令
    manager.add_command("db",MigrateCommand)
    
  • 查看db相关的命令

    python main.py

    执行命令

    1、init命令,初始化,创建迁移文件目录,只需要执行一次

    python main.py db init

    2、migrate生成迁移文件,将模型中的变更生成对应的迁移文件

    python main.py db migrate

​ 3、upgrade执行迁移文件,将生成的迁移文件执行,达到同步表结构的效

​ python main.py db upgrade

五、flask-wtf

  • 介绍

    Flask-WTF是集成WTForms,并带有 csrf 令牌的安全表单和全局的 csrf 保护功能的一个Flask扩展。WTForms是一个Flask集成的框架,或者是说库,主要用于对用户请求数据的进行验证,Flask表单这一部分我们都是使用Flask-WTF与WTForms来进行实现,安装Flask-WTF默认也会安装WTForms

  • 安装

    pip install flask-wtf

  • 使用flask-wtf

    表单验证一般是有前端验证的,前端验证使用js交互性很好,也可以做一些特效,但是安全性不高,因为有些工具,比如postman可以绕过前端验证直接向指定的url路由发送请求,这样前端验证就失效了。所以如果要求安全性高的项目,一般再加上后端验证,flask-wtf就可以完成后端验证。

    思路:

    1、接收参数

    2、各种判断

    (1) 满足需求,放行

    (2) 不满足需求,提示

    from flask_wtf import FlaskForm
    import wtforms
    from wtforms import validators
    
    
    
    
    class RegisterForm(FlaskForm):
        username = wtforms.StringField(
            # 文本
            label="用户名",
            # 验证规则
            validators=[
                validators.Length(max=6, min=2, message="长度必须是2-6之间")
            ]
        )
        password = wtforms.PasswordField(
            # 文本
            label="密码",
            # 验证规则
            validators=[
                validators.DataRequired(message="密码必填")
            ]
        )