蓝图简介:


说明: 蓝图主要为了实现应用的模块化,使得应用层次清晰,开发者可以更容易的开发和维护项目,蓝图通常作用于相同的URL前缀,如/user/add, /user/del, /user/pro..都是以/user开头,则可以放到一个模块中


创建加载:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# 51CTOBG: http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
from flask import Flask, Blueprint
# 说明: 导入其它模块
monitor = Blueprint('monitor', __name__, url_prefix='/monitor', static_folder='static', template_folder='templates')
@monitor.route('/dashboard', methods=['GET'])
def dashboard():
    return 'monitor-dashboard'
def create_app(env='default'):
    app = Flask(__name__)
    app.register_blueprint(monitor)
    return app
app = create_app()
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=True)

说明: 通过flask.Blueprint创建蓝图,此类支持多个参数,常用的参数如上,第一个参数必须是蓝图名,强制与变量名相同,因为会被反射调用或是间接导入,第二个参数和flask.Flask的第一个参数一样,子模块的根目录,url_prefix定义当访问此蓝图下定义的路由时需要加前缀/monitor,这样就可以避免在其下面所有的视图函数的装饰器上多写一个/monitor的路径,还支持通过static_folder/template_folder来指定静态资源目录和模版目录,但是默认是基于app的根目录路径,如果要实现每个蓝图的静态文件或模版文件在各自蓝图根目录的话可在创建蓝图时通过指定static_url_path='/static'即可,记住必须要以/开头,要使蓝图生效还必须通过app.register_blueprint来注册蓝图,当然Blueprint中的大多是可选参数都是可以在app.register_blueprint注册蓝图时传递的~很方便吧~