flask web开发,整合jwt,marshmallow,mi

2020-02-28  本文已影响0人  我叫zhengxianjun

今天,有必要总结下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代码

上一篇下一篇

猜你喜欢

热点阅读