深入了解Python?Flask框架之藍圖
隨著Flask項目越來越復雜,把所有視圖函數(shù)放在一個應(yīng)用文件中會很不方便我們管理,所以需要對程序進行模塊化的處理。Flask內(nèi)置了一個模塊化處理的類——Blueprint藍圖。
Blueprint 是一種組織一組相關(guān)視圖及其他代碼的方式。與把視圖及其他代碼直接注冊到應(yīng)用的方式不同,藍圖方式是把它們注冊到藍圖,然后在工廠函數(shù)中把藍圖注冊到應(yīng)用。
簡單來說就把app應(yīng)用分為很多個小模塊,把這些小模塊放在一個包里,這個包叫做藍圖,如下圖所示:

項目目錄如下圖所示:

這里創(chuàng)建了一個名為apps的包,我們這個包稱為藍圖,在這個包中,我們又創(chuàng)建了三個包,那么我們?nèi)绾伟阉{圖與app.py聯(lián)系起來呢。這時我們就要通過init.py初始化文件來把藍圖與app.py。
首先我們在user包中創(chuàng)建一個視圖函數(shù)文件名為view,代碼如下所示:
from flask import Blueprint
user_bp= Blueprint('user',__name__)
首先導入Blueprint包,再通過Blueprint()方法來定義變量user_bp為藍圖對象。
init.py初始化文件代碼如下所示:
from flask import Flask
from apps.user.view import user_bp
?
def create_app():
app=Flask(__name__,template_folder='../templates',static_folder='../static')
?
#藍圖
app.register_blueprint(user_bp)
return app
首先我們導入user中的view對象user_bp,自定義函數(shù)create_app()并創(chuàng)建一個app對象,然后通過app.register_blueprint()方法將藍圖對象綁定在app對象上。
注意:由于init.py初始化文件與static靜態(tài)文件、templates模板文件不在同一級,所以需要重新指定靜態(tài)文件與模板文件的位置。
接下來編寫app.py啟動文件,代碼如下所示:
from flask import Flask
from apps.user.view import user_bp
?
def create_app():
app=Flask(__name__,template_folder='../templates',static_folder='../static')
?
#藍圖
app.register_blueprint(user_bp)
return app
代碼很簡單,直接導入view文件中的create_app并調(diào)用create_app()。
這樣app.py文件就和藍圖包聯(lián)系起來了。
注意:上面的文件名、藍圖名、視圖函數(shù)名都可以是任意的。
那么我們藍圖的視圖函數(shù)有什么變化呢?
以上面的view視圖函數(shù)文件為例,其代碼內(nèi)容如下所示:
from flask import Blueprint, request, render_template, redirect
from apps.user.model import User
user_bp= Blueprint('user',__name__) #藍圖對象
@user_bp.route('/')
def hello():
return '你好'
與之前的在app.py中寫視圖函數(shù)將比,將之前的@app.route()改為藍圖對象名.route(),其他的就幾乎一樣。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
聊聊Python pandas 中l(wèi)oc函數(shù)的使用,及跟iloc的區(qū)別說明
這篇文章主要介紹了聊聊Python pandas 中l(wèi)oc函數(shù)的使用,及跟iloc的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Django使用HttpResponse返回圖片并顯示的方法
今天小編就為大家分享一篇Django使用HttpResponse返回圖片并顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
tensorflow saver 保存和恢復指定 tensor的實例講解
今天小編就為大家分享一篇tensorflow saver 保存和恢復指定 tensor的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
基于Flask+websocket實現(xiàn)一個在線聊天室
在今天的互聯(lián)網(wǎng)時代,實時通信成為了許多應(yīng)用和服務(wù)的核心特色,在本文中,我們將介紹如何使用 Flask 和 Websockets 通過 Flask-SocketIO 框架創(chuàng)建一個簡單的在線聊天室,感興趣的可以跟隨小編一起了解下2023-09-09
python爬蟲指南之xpath實例解析(附實戰(zhàn))
在進行網(wǎng)頁抓取的時候,分析定位html節(jié)點是獲取抓取信息的關(guān)鍵,目前我用的是lxml模塊,下面這篇文章主要給大家介紹了關(guān)于python爬蟲指南之xpath實例解析的相關(guān)資料,需要的朋友可以參考下2022-01-01
Python+PyQt5實現(xiàn)自動化任務(wù)管理
這篇文章主要為大家詳細介紹了如何通過PyQt5構(gòu)建圖形界面,使用Python實現(xiàn)了一個自動化任務(wù)管理系統(tǒng),感興趣的小伙伴可以參考一下2025-04-04

