蓝图是保存了一组将来可以在应用对象上执行的操作。注册路由就是一种操作,当在程序实例上调用route装饰器注册路由时,这个操作将修改对象的url_map路由映射列表。当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项。当执行应用对象的 register_blueprint() 方法时,应用对象从蓝图对象的 defered_functions 列表中取出每一项,即调用应用对象的 add_url_rule() 方法,这将会修改程序实例的路由映射列表。
项目说明
- 解决全部url跳转都是从单文件app.py的装饰器分发
- 解决单文件布局问题
- 引入Blueprint蓝图
app.py
from flask import Flask from flask import render_template from api import * app = Flask(__name__) # 注册蓝图 app.register_blueprint(api, url_prefix='/api') @app.route("/") def index(): data_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] data_list = [150, 230, 224, 218, 135, 147, 260] return render_template('index.html', data_name=data_name, data_list=data_list) if __name__ == '__main__': app.run("127.0.0.1", "8800", debug=True)
api.py
import json from flask import Blueprint api = Blueprint('api', __name__) # 默认页面 @api.route('/') def api_home(): return '漏刻有时Python API接口' # 返回JSON数据 @api.route('/line') def get_line(): data_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return json.dumps(data_name)
测试链接
http://127.0.0.1:8800/ http://127.0.0.1:8800/api/ http://127.0.0.1:8800/api/line
lockdatav Done!