Flask 蓝图(分文件)

Flask 蓝图(分文件)

Flask蓝图的作用是为了项目目录更清晰,也可以防止循环导入

一.使用蓝图之中小型系统

项目目录结构

-flask_pro
    -flask_test
        -__init__.py
        -static
        -templates
        -views
            -order.py
            -user.py
    -run.py 

__init_.py

from flask import Flask
app = Flask(__name__)

from .views import user
from .views import order

app.register_blueprint(user.us)   #注册蓝图app.register_blueprint(蓝图的对象)
app.register_blueprint(order.us)   

run.py

from flask_pro.flask_test import app

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

user.py

from flask import Blueprint

us = Blueprint("user",__name__)  #蓝图的对象的名称=Blueprint('自定义蓝图名称',__name__)

@us.route("/user")
def user():
    return "user"

order.py

from flask import Blueprint

us = Blueprint("order",__name__)  #蓝图的对象的名称=Blueprint('自定义蓝图名称',__name__)

@us.route("/order")
def order():
    return "order"

二.使用蓝图之大型系统

项目目录结构

│  run.py  
│
└─pro_flask  # 文件夹__init__.py 
    │
    ├─admin  # 文件夹
    │  │  views.py
    │  │  __init__.py
    │  │
    │  ├─static # 文件夹
    │  └─templates  # 文件夹
    │
    └─web   # 文件夹
       │  views.py
       │  __init__.py
       │
       ├─static  # 文件夹
       └─templates # 文件夹
    

run.py启动app

from pro_flask import app

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

__init__.py 实例化核心类,导入蓝图对象,注册蓝图

from flask import Flask
from .admin import admin
from .web import web

app = Flask(__name__)

app.register_blueprint(admin, url_prefix='/admin')   # 起分路由的作用,前缀加/admin
app.register_blueprint(web)

admin.views.py 完成路由注册以及视图函数

from . import admin

@admin.route('/index')
def index():
    return 'Admin.Index'

admin.init.py 生成蓝图对象导入views,使得views的代码运行完成路由注册

from flask import Blueprint

admin = Blueprint(
    'admin',
    __name__,
    template_folder='templates',
    static_folder='static'
)
from . import views

web文件夹下和admin文件夹下目录构成完全一致,此处不再举例

原文地址:https://www.cnblogs.com/baohanblog/p/12528601.html