Flask 用Blueprint实现模块化的应用

在一个大型项目中,肯定会有很多模块组成,比如一个网络管理系统可能有流量运营模块,实时分析模块,故障预警模块等。我们可以利用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 里面。

原创文章 54 获赞 168 访问量 63万+

猜你喜欢

转载自blog.csdn.net/bojie5744/article/details/55253999