在一个大型项目中,肯定会有很多模块组成,比如一个网络管理系统可能有流量运营模块,实时分析模块,故障预警模块等。我们可以利用Flask Blueprint 实现每个模块的功能进行独立的开发与管理,后面的实践案例主要体现Buleprint以下功能
1. 可以独立管理网页的静态文件,如js,css,图片等,即可以指定单纯的静态路径,同时也可能指定模版的路径。
2. 方便模块整合,无耦合。
案例工程结构:
>netmange #工程文件夹
app.py #启动入口
>netflow #netflow 模块
views.py #netflow 路由
>assets #netflow 静态文件
>templates #netflow templates
第一个Blueprint案例 (netmange/netflow/views.py 的源码)
# -*- coding: utf-8 -*-
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
netflow_manager = Blueprint("netflow", __name__, static_folder="assets",template_folder='templates')
#这是 app设置的方式:app = Flask(__name__, static_folder='', template_folder='')
#这行设置这个项目的静态根目录和模版目录,直接暴露assets文件夹为静态
@netflow_manager.route("/show", methods=['GET'])
def show():
return "show !"
启动入口(netmange/app.py 的源码)
# -*- coding: utf-8 -*-
from flask import Flask
from netmange.netflow.views import netflow_manager
app = Flask(__name__)
app.register_blueprint(netflow_manager)
@app.route("/", methods=["GET"])
def index():
return "index !"
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=7888,threaded=True) #此处 threaded=True 为多线程启动
启动后,浏览器输入http://127.0.0.1:7888/show 就可以看到show
!的显示,为了验证设置的静态文件路径和模版路径是否正确,可自行添加文件在netmange/netflow/assets
和netmange/netflow/templates 里面。