什么是藍(lán)圖
在flask項(xiàng)目中可以用Blueprint(藍(lán)圖)實(shí)現(xiàn)模塊化的應(yīng)用隐圾,使用藍(lán)圖可以讓應(yīng)用層次更清晰望几,開發(fā)者更容易去維護(hù)和開發(fā)項(xiàng)目绩脆。藍(lán)圖將作用于相同的url的前綴的請求地址,將具有相同前綴的請求都放在一個(gè)模塊中
使用藍(lán)圖
安裝
pip install flask_blueprint
實(shí)例化藍(lán)圖應(yīng)用
blue = Blueprint('first', __name__)
注: Blueprint中傳入了兩個(gè)參數(shù),第一個(gè)藍(lán)圖的名稱靴迫,第二個(gè)是藍(lán)圖所在的包或模塊惕味,__name__代表當(dāng)前模塊名或包名
注冊
app = Flask(__name__)
app.register_blueprint(blue, url_prefix='/user')
注:第一個(gè)參數(shù)即我們定義初始化定義的藍(lán)圖對象,第二個(gè)參數(shù)url_prefix表示該藍(lán)圖下玉锌,所有的url請求必須以/user開始名挥。這樣對一個(gè)模塊的url可以很好的進(jìn)行統(tǒng)一管理
實(shí)例
修改視圖上的裝飾器,修改為@blue.router('/')
@blue.route('/', methods=['GET', 'POST'])
def hello():
# 視圖函數(shù)
return 'Hello World'
注:該方法對應(yīng)的url為127.0.0.1:5000/user/
url_for 反向解析
語法:
url_for('藍(lán)圖中定義的第一個(gè)參數(shù).函數(shù)名', 參數(shù)名=value)
定義跳轉(zhuǎn):
from flask import url_for, redirect
@blue.route('/redirecet/')
def make_redirect():
# 第一種方法
return redirect('/hello/index/')
# 第二種方法
return redirect(url_for('first.index'))