1. 程式人生 > >falsk_藍圖(blueprint)

falsk_藍圖(blueprint)

藍圖(blueprint)

 

隨著業務程式碼的增加,將所有程式碼都放在單個程式檔案中,是非常不合適的。這不僅會讓程式碼閱讀變得困難,而且會給後期維護帶來麻煩。

 

什麼是藍圖

藍圖:用於實現單個應用的檢視、模板、靜態檔案的集合。

 

藍圖就是模組化處理的類。

 

簡單來說,藍圖就是一個儲存操作路由對映方法的容器,主要用來實現客戶端請求和URL相互關聯的功能。 在Flask中,使用藍圖可以幫助我們實現模組化應用的功能。

 

藍圖的執行機制

藍圖是儲存了一組將來可以在應用物件上執行的操作。註冊路由就是一種操作,當在程式例項上呼叫

route裝飾器註冊路由時,這個操作將修改物件的url_map路由對映列表。當我們在藍圖物件上呼叫route裝飾器註冊路由時,它只是在內部的一個延遲操作記錄列表defered_functions中添加了一個項。當執行應用物件的 register_blueprint() 方法時,應用物件從藍圖物件的 defered_functions 列表中取出每一項,即呼叫應用物件的 add_url_rule() 方法,這將會修改程式例項的路由對映列表。

 

demo:

# -*- encoding: utf-8 -*- # 使用藍圖需要依賴BLUEPRINT庫 from flask import Flask,Blueprint #匯入自定義藍圖檔案 from day06_part import mypart app = Flask(__name__) app.config.from_pyfile('config.ini') #註冊定義好的藍圖檔案,給藍圖的url加字首,若不加字首則同路由將被重寫 app.register_blueprint(mypart,url_prefix='/henan') @app.route("/") def index(): return "shouye" @app.route("/henan") def henan(): return "henan" if __name__ == "__main__": app.run()     # -*- encoding: utf-8 -*- from flask import Flask,Blueprint app = Flask(__name__) app.config.from_pyfile('config.ini') #註冊藍圖 mypart = Blueprint('mypart',__name__) @mypart.route("/") def index(): return "hello" @mypart.route("/ni") def ni(): return "ni"