3.1 应用、蓝图与视图函数

1.Flask的层级关系

image.png
  • Flask最上层是app核心对象

  • 在这个核心对象上可以插入很多蓝图,这个蓝图是不能单独存在的,必须将app作为插板插入app

  • 在每一个蓝图上,可以注册很多静态文件,视图函数,模板

  • 一个业务模块可以做为一个蓝图,比如book,user。可以把视图函数注册到蓝图上再插入app。以此来达到之前分文件的目的

  • 之前的book.py 放到了app/web/路径下,就是考虑到了蓝图。app属于是整个Flask应用层。web属于是蓝图

2.代码规范化

应该讲一些初始化工作,放在对应层级的包的初始化文件 __init__.py 中。比如Flask核心应用app对象初始化应该放在应用层级app包的 __init__.py 中。蓝图的初始化,应该放在对应蓝图层级web包的__init__.py中,并且所有蓝图对应的试图函数都应该放在web目录下

image.png
# app/__init__.py

from flask import Flask

def create_app():
    app = Flask(__name__)

    app.config.from_object("config")
    return app

修改后的fisher.py

from app import create_app


app = create_app()

if __name__ == "__main__":
    print("id为" + str(id(app)) + "的app启动")
    app.run(host=app.config["HOST"], debug=app.config["DEBUG"], port=app.config["PORT"])

Last updated

Was this helpful?