知識點: 一、藍圖html
從前面的知識點能看出來,咱們全部的視圖函數都寫在了一個文件當中,當咱們的業務越來複雜的時候。視圖函數也會變得愈來愈多,致使閱讀不方便,維護起來困難等難題。好比下面這樣:python
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
@app.route('/')
def index():
return 'index page'
# home視圖
@app.route('/home')
def home():
return 'home page'
# center視圖
@app.route('/center')
def center():
return 'center page'
# order視圖
@app.route('/order')
def order():
return 'order page'
# cart視圖
@app.route('/cart')
def cart():
return 'cart page'
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000, debug=True) # 運行程序
複製代碼
能看出來,當咱們業務有新的需求的時候,咱們還會往這個裏面添加視圖函數。flask
例如咱們把上面的home視圖抽出來,放到單獨的一個home.py文件中。在此文件只寫一個沒有被裝飾器裝飾的視圖函數。瀏覽器
def home():
return 'home page'
複製代碼
而後在Flask的啓動程序文件中,把home視圖在從新用裝飾器裝飾起來。app
from flask import Flask
from home import home
app = Flask(__name__)
# 裝飾home視圖
app.route('/home')(home)
@app.route('/')
def index():
return 'index page'
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000, debug=True) # 運行程序
複製代碼
咱們在瀏覽器調試一下: 框架
什麼是藍圖 Flask中的藍圖有點像Django框架的app的意思。就是把一個項目模塊化,每一個模塊所用的視圖、靜態文件、模板放在一個盒子裏。模塊化
使用藍圖 在使用藍圖以前,咱們須要先建立藍圖,繼續那咱們上面的home視圖函數舉例,把home.py文件裏面的代碼修改以下:函數
from flask import Blueprint
# app_home值藍圖的名稱,
# __name__指藍圖所在模塊
app_home = Blueprint('app_home', __name__)
# 註冊藍圖路由
@app_home.route('/home')
def home():
return 'home page'
複製代碼
Flask的啓動程序文件中,導入藍圖並註冊藍圖:網站
from flask import Flask
#導入藍圖
from home import app_home
app = Flask(__name__)
# 註冊藍圖
app.register_blueprint(app_home)
@app.route('/')
def index():
return 'index page'
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000, debug=True) # 運行程序
複製代碼
咱們在瀏覽器調試一下: url
app.register_blueprint(app_home, url_prefix='/user')
複製代碼
咱們在瀏覽器調試一下:
咱們還能夠把Flask中的藍圖用python中包的概念管理起來。仍是上面的例子,咱們建立一個home文件夾(包):
from flask import Blueprint
# app_home值藍圖的名稱,
# __name__指藍圖所在模塊
app_home = Blueprint('app_home', __name__)
from .views import home
複製代碼
在views.py文件中註冊藍圖路由:
from . import app_home
# 註冊藍圖路由
@app_home.route('/home')
def home():
return 'home page'
複製代碼
在Flask啓動文件導入藍圖:
from flask import Flask
# 導入藍圖
from home import app_home
app = Flask(__name__)
# 註冊藍圖
app.register_blueprint(app_home, url_prefix='/user')
@app.route('/')
def index():
return 'index page'
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000, debug=True) # 運行程序
複製代碼
咱們在瀏覽器調試一下:
from . import app_home
from flask import render_template
# 註冊藍圖路由
@app_home.route('/home')
def home():
return render_template('home.html')
複製代碼
咱們在瀏覽器調試一下:
歡迎關注個人公衆號: