一、插件与蓝图
-
flask中的配置文件
flask中的配置文件是放在app.config,可以像操作字典一样进行操作
-
直接编写
直观,简单
将常见的一些固定不变的配置写入
-
配置文件
-
配置类
推荐使用 配置类
二、蓝图
Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用, Flask 可以通过Blueprint来组织URL以及处理请求
Flask使用Blueprint让应用实现模块化
- 创建蓝图步骤
-
创建蓝图文件,里面需要包含两个文件 init文件 view文件
-
先在init文件中创建蓝图对象, 导入view视图(导包from flask import Blueprint)
-
在view视图里导入蓝图对象,进行业务操作
-
最后把蓝图对象注册到应用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="密码必填") ] )