蓝图的概念:

对应用程序的结构进行分配

 

蓝图的作用:

    将不同的功能 模块化;
    构建大型的应用;
    优化项目结构;
    增强可读性,易于维护;

 

蓝图构建项目目录:

定义蓝图 每个app应用下的init 文件中

home/__init__.py

    from flask import Blueprint
    home = Blueprint('home',__name__,template_folder='',static_folder='')
    import app.home.views   

admin/__init__.py

    from flask import Blueprint
    admin = Blueprint('admin',__name__)
    import app.admin.views  

 

home/views.py
    from . import home
    @home.route('/')
    def index():
        return "<h2>这是home</h2>"

admin/views.py
    from . import home
    @admin.route('/')
    def index():
        return "<h2>这是admin</h2>"

 

注册蓝图

   app/ __init__.py

        from flask import Flask

        app = Flask(__name__)
        app.debug = True                 # 开启debug模式提示报错信息

        from app.home import home as home_blueprint
        from app.admin import admin as admin_blueprint

        app.register_blueprint(home_blueprint)
        app.register_blueprint(admin_blueprint,url_prefix='/admin')   # 指定访问前缀,类似于django的 include

 

调用蓝图

manage.py :

    from  app import app

    if __name__ == '__main__':
    app.run()

目录结构

flask_project
            │  create_db.py
            │  manage.py
            │
            └─app
                │  models.py
                │  __init__.py
                │
                ├─admin
                │      forms.py
                │      views.py
                │      __init__.py
                │
                ├─home
                │      forms.py
                │      views.py
                │      __init__.py
                │
                ├─static
                └─templates
                    │  404.html
                    │
                    ├─admin
                    └─home

 

请求扩展 -- before_request 等 可以单独对 蓝图生效,也可以对整个app生效