Flask-藍圖?blueprint詳情
前言:
我們的應(yīng)用經(jīng)常會有很多小模塊,比如用戶模塊、后臺管理模塊等,雖然這些模塊都在同一個應(yīng)用中,但是功能大不相同,把他們放在同一個文件中,顯得十分雜亂,不便于管理維護,那么有沒有什么方法可以將模塊分開管理呢?是有的!Flask 藍圖(Blueprint),它可以模塊化管理路由,使用藍圖可以把不同模塊的視圖函數(shù)寫在不同的py文件中,在主視圖中導(dǎo)入分路由視圖的模塊,并注冊藍圖對象,降低各個功能模塊的耦合度使程序結(jié)構(gòu)更加簡單、清晰。
Flask使用Blueprint讓應(yīng)用實現(xiàn)模塊化,在Flask中,Blueprint具有如下屬性:
- 一個項目可以具有多個
Blueprint
- 可以將一個
Blueprint
注冊到任何一個未使用的URL
下比如 “/
”、“/sample
”或者子域名 - 在一個應(yīng)用中,一個模塊可以注冊多次
Blueprint
可以單獨具有自己的模板、靜態(tài)文件或者其它的通用操作方法,它并不是必須要實現(xiàn)應(yīng)用的視圖和函數(shù)的- 在一個應(yīng)用初始化時,就應(yīng)該要注冊需要使用的
Blueprint
1、藍圖的定義
藍圖就是用于實現(xiàn)單個應(yīng)用的視圖、模板、靜態(tài)文件的集合。使用藍圖可以實現(xiàn)模塊化應(yīng)用的功能,有些類似于Django
中子應(yīng)用 app
。
藍圖使用起來就像應(yīng)用當中的子應(yīng)用一樣,可以有自己的視圖、模板,靜態(tài)文件等。多個藍圖之間互不影響,但是它們可以共享應(yīng)用的全局變量、配置信息等。
1.1使用藍圖
使用flask.Blueprint
定義藍圖,app.register_blueprint
注冊藍圖。
下面來具體介紹一下如何使用藍圖。
新建創(chuàng)建一個“user
”子目錄,并在該目錄中新建一個 __init__.py
文件,在文件中,創(chuàng)建用戶藍圖對象:
from flask import Blueprint user_bp = Blueprint("user", __name__, url_prefix="/user")
創(chuàng)建了藍圖對象“user_bp
”,Blueprint
的第一個參數(shù)user
指定了這個藍圖的名稱,第二個參數(shù)指定了該藍圖所在的模塊名,這里是當前文件,第三個參數(shù)指定其 url 前綴。
然后編寫視圖文件 views.py,并編寫視圖函數(shù):
from user import user_bp @user_bp.route('/') def index(): return '<h1>Hello, this is user blueprint</h1>' @user_bp.route('/add') def add_user(): return '<h1>add success!</h1>' ······
在視圖函數(shù)上使用了藍圖對象“user_bp
”,使用起來類似于 Flask
的 app
對象,使用user_bp.route()
指定路由。
然后在 __init__.py
文件末尾添加如下代碼,導(dǎo)入視圖函數(shù)。
from . import views
當然,也可以選擇把 __init__.py 文件內(nèi)創(chuàng)建藍圖對象“user_bp”的代碼寫在視圖文件?views.py 中,__init__.py 文件置空。
最后,在應(yīng)用主程序 app.py
中注冊該藍圖,使用app.register_blueprint()
方法即可:
app.register_blueprint(user_bp)
也可以在注冊藍圖時指定其 url 前綴。
我們現(xiàn)在已經(jīng)使用藍圖創(chuàng)建了用戶模塊,之后再添加其他模塊,使用以上步驟添加即可。
到此這篇關(guān)于 Flask-藍圖 blueprint詳情的文章就介紹到這了,更多相關(guān) Flask 藍圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò)簡單示例
這篇文章主要介紹了Python實現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò),是一篇摘錄自github代碼片段的文章,涉及Python遞歸與數(shù)學(xué)運算相關(guān)操作技巧,需要的朋友可以參考下2017-08-08python之語句mode = 'test' if y&nb
這篇文章主要介紹了python之語句mode = 'test' if y is None else 'train'問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02python使用redis實現(xiàn)消息隊列(異步)的實現(xiàn)完整例程
本文主要介紹了python使用redis實現(xiàn)消息隊列(異步)的實現(xiàn)完整例程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01解決python2中unicode()函數(shù)在python3中報錯的問題
這篇文章主要介紹了在python2中unicode()函數(shù)在python3中報錯的解決方案,希望給大家做個參考,下次出現(xiàn)這個問題的時候,也知道如何應(yīng)對2021-05-05Python+requests+unittest執(zhí)行接口自動化測試詳情
這篇文章主要介紹了Python+requests+unittest執(zhí)行接口自動化測試詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-09-09Python實戰(zhàn)之markdown轉(zhuǎn)pdf(包含公式轉(zhuǎn)換)
由于我們markdown編輯器比較特殊,不是很方便瀏覽,如果轉(zhuǎn)換成pdf的話,就不需要可以的去安裝各種編輯器才可以看了。所以本文將介紹如何通過Python實現(xiàn)md轉(zhuǎn)pdf或者是docx,需要的朋友可以參考一下2021-12-12