蓝图是保存了一组将来可以在应用对象上执行的操作。注册路由就是一种操作,当在程序实例上调用route装饰器注册路由时,这个操作将修改对象的url_map路由映射列表。当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项。当执行应用对象的 register_blueprint() 方法时,应用对象从蓝图对象的 defered_functions 列表中取出每一项,即调用应用对象的 add_url_rule() 方法,这将会修改程序实例的路由映射列表。
项目说明- 解决全部url跳转都是从单文件app.py的装饰器分发
- 解决单文件布局问题
- 引入Blueprint蓝图
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!