2024-09-24學(xué)習(xí)記錄(上午)

連著2天沒(méi)有記錄,身體不是太好

今天開(kāi)始繼續(xù)記錄

這本書(shū)的第七章留言板和第八章個(gè)人博客,我原以為這后面的內(nèi)容只是單純的利用前面所學(xué)的知識(shí)做一些項(xiàng)目

沒(méi)想到是一邊做項(xiàng)目一邊需要繼續(xù)學(xué)習(xí)新的一些內(nèi)容

這幾章內(nèi)容個(gè)人覺(jué)得編寫(xiě)的有些過(guò)于雜亂,讓人初讀難以理解,不過(guò)姑且還是先整理記錄一下


首先是第七章:留言板

這一章我覺(jué)得唯一的重點(diǎn)就只有“包組織對(duì)象”這一塊內(nèi)容

在前面的內(nèi)容中,所有的代碼都是全部放在一個(gè)模塊(py文件)之中去執(zhí)行的,當(dāng)項(xiàng)目簡(jiǎn)單的時(shí)候可以這樣做

當(dāng)項(xiàng)目變得復(fù)雜以后,可以選擇把模塊升級(jí)為包


Q:什么是模塊?什么是包?

在python中,每一個(gè)有效的python文件都是模塊,每一個(gè)包含__init__.py文件的文件夾都是包

__init__.py文件通常被稱(chēng)為構(gòu)造文件,文件可以為空,也可以用來(lái)放置包的初始化代碼

當(dāng)包或包內(nèi)的模塊被導(dǎo)入時(shí),構(gòu)造文件將會(huì)被自動(dòng)執(zhí)行


關(guān)于配置

之前的配置都是通過(guò)config來(lái)寫(xiě)入,使用包的時(shí)候可以把配置寫(xiě)到settings.py中

再單獨(dú)的文件中定義配置時(shí),不再使用config對(duì)象來(lái)添加配置,而是以鍵值對(duì)的形式寫(xiě)出


創(chuàng)建程序?qū)嵗?/p>

使用包組織代碼后,創(chuàng)建程序?qū)嵗⒊跏蓟卣沟炔僮骺梢栽跇?gòu)造文件中實(shí)現(xiàn)

__init__.py

app=Flask('sayhello')

app.config.from_profile('setting.py')

db=SQLALchemy(app)

from sayhello import views,errors,commands

在單腳本中創(chuàng)建程序?qū)嵗龝r(shí)我們傳__name__變量值

但是使用包組織代碼時(shí)最好以硬編碼的形式寫(xiě)出包名稱(chēng)作為程序名稱(chēng)


為了讓使用程序?qū)嵗齛pp的各種處理程序能和程序?qū)嵗P(guān)聯(lián)起來(lái),需要在文件末尾導(dǎo)入


之后還講了下生成虛擬數(shù)據(jù)的方法

fake=Faker('zh_CN')


第八章是個(gè)人博客

第一個(gè)是重點(diǎn)是藍(lán)本

比如把views.py轉(zhuǎn)換成blueprints子包,views.py的內(nèi)容被轉(zhuǎn)化成auth.py,blog.py,admin.py

實(shí)例化藍(lán)本類(lèi)

from flask import Blueprint

blog=Blueprint('blog',__name__)

第一個(gè)參數(shù)的藍(lán)本名稱(chēng)


Q:藍(lán)本的創(chuàng)建?

藍(lán)本一般在子包中創(chuàng)建,比如創(chuàng)建一個(gè)blog子包,然后在構(gòu)造文件中創(chuàng)建藍(lán)本實(shí)例

在簡(jiǎn)單的程序中也可以直接在模塊中創(chuàng)建藍(lán)本實(shí)例

在藍(lán)本對(duì)象的名稱(chēng)后可以添加一個(gè)_bp,更容易區(qū)分藍(lán)本對(duì)象


裝配藍(lán)本

@auth_bp.route('/login')


注冊(cè)藍(lán)本

app.regsiter_blueprint(auth_bp)

如果加一個(gè)url_prefix前綴,藍(lán)本下的視圖的url前都會(huì)加上前綴


藍(lán)本的路由端點(diǎn)

當(dāng)你在藍(lán)本中定義路由時(shí),端點(diǎn)的名稱(chēng)會(huì)由藍(lán)本名和視圖函數(shù)名組合而成

藍(lán)本的路由端點(diǎn)通過(guò)使用藍(lán)本名.視圖函數(shù)名的形式,有助于避免不同模塊之間的命名沖突,增強(qiáng)代碼的可讀性和組織性,使大型應(yīng)用的結(jié)構(gòu)更加清晰。


藍(lán)本資源

如果程序的不同藍(lán)本的頁(yè)面需要截然不同的樣式,可以把藍(lán)本定義為獨(dú)有的靜態(tài)文件和模板

這時(shí)需要把藍(lán)本模塊升級(jí)為包,在構(gòu)造文件中創(chuàng)建藍(lán)本實(shí)例

并在藍(lán)本包中創(chuàng)建static和templates文件夾

如果要使用藍(lán)本獨(dú)有的靜態(tài)文件,需要在定義藍(lán)本時(shí)使用static_folder關(guān)鍵字指定藍(lán)本的靜態(tài)文件文件夾路徑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容