flask web开发,整合jwt,marshmallow,mi
今天,有必要总结下flask的web经历。
这个是工作中,用到的开发web项目的代码结构,python框架,做一个demo,只要填充代码就可以了。代码在后文连接。
项目代码整合了模块:
flask_marshmallow,
flask_jwt_extended,
flask_migrate,
flask_sqlalchemy
一.使用pycharm,新建flask web项目。IDE会直接生成代码结构,但是不是我们想要的,所以要改下代码结构。如下。
代码结构二. 启动流程
1.在当前根目录下控制台用flask run 命令启动创建app实例,(这个命令是flask内置命令),程序的配置值存储在.env文件中。
当安装了python-dotenv并使用Flask内置的run命令启动程序时,.env文件的环境变量会被自动设置。
会一开始找到.env文件,里面是环境变量的值,通过
from environs import Env
env = Env()
env.read_env()
这个程序模块可以读取.env的文件配置,用来赋值给setting.py文件,
再通过app.config.from_object(config_object)来配置app,从环境变量加载配置可以方便地在不改动代码的情况下切换配置。这个值可以在.fenv文件中设置,然后通过工厂函数,来进行实例化程序,Flask会自动从环境变量FLASK_APP的值定义的模块中寻找名为create_app()或make_app()的工厂函数,自动调用工厂函数创建程序实例并运行。
工厂函数一般如下形式:
'''
def create_app():
app = Flask(__name__, instance_relative_config=True,static_folder='../Files')
app.config.from_object('setting.py')
register_extensions(app)
register_blueprint(app)
return app
'''
2.
register_extensions(app) 加载扩展模块
register_blueprint(app) 注册蓝图
三.
扩展模块:
扩展模块对应model:
由于配置文件中有中文,会在使用flask db init 初始化数据库保错
报错flask db init 后生成迁移文件migrations
迁移文件migrations# 由于flask 对表结构改变 如添加字段 和删除字段 没有自动修改的功能 而spring data jpa 是有的
# 所有用这个来改变表结构和对数据进行迁移
# 主要命令是 1.flask db init 初始化
# 2.flask db migrate -m " message" 生成迁移文件
# 3.flask db upgrade 用来更新数据库 即运行2产生的迁移文件 如果一开始就有迁移文件 可以直接运行这步
# 以后有修改表model结构 就直接运行2和3
四.完成
启动程序使用postman测试
测试感觉总算完成了,代码有详细解释,需要可以看看。以后在完善。https://github.com/JUN-ZZ/flask-app代码