W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
對(duì)于比較大型的應(yīng)用,更好的做法是使用包管理代碼,而不是模塊來(lái)管理代碼。 這非常簡(jiǎn)單,設(shè)想一個(gè)如下結(jié)構(gòu)的應(yīng)用:
/yourapplication
/yourapplication.py
/static
/style.css
/templates
layout.html
index.html
login.html
...
將一個(gè)項(xiàng)目改為一個(gè)更大的包,僅僅創(chuàng)建一個(gè)新的 yourapplication 文件夾在 已存的文件夾下面,然后將所有的的文件都移動(dòng)到它下面。之后將 yourapplication.py 重命名為 __init__.py (確保先刪除了其中所有的 .pyc 文件,否則可能導(dǎo)致 錯(cuò)誤的結(jié)果)
您最后得到的東西應(yīng)該像下面這樣:
/yourapplication
/yourapplication
/__init__.py
/static
/style.css
/templates
layout.html
index.html
login.html
...
如何在此種方式下運(yùn)行您的應(yīng)用?原來(lái)的 ?python yourapplication/__init__.py
? 不能再工作了。這是由于 Python 不希望在包中的模塊成為初始運(yùn)行的文件。但這 不是一個(gè)大問題,僅僅添加一個(gè)名叫 runserver.py 的新文件,把這個(gè)文件放在 yourapplication 文件夾里,并添加如下功能:
from yourapplication import app
app.run(debug=True)
然后,我們又能對(duì)應(yīng)用做什么呢?現(xiàn)在我們可以重新構(gòu)造我們的應(yīng)用,將其 改造為多個(gè)模塊。你唯一需要記住的就是下面的速記備忘表:
route()
? 裝飾器的那些)視圖函數(shù)必須 導(dǎo)入到 __init__.py 文件。此時(shí),請(qǐng)通過(guò)模塊而不是對(duì)象本身作為路徑 導(dǎo)入這些視圖函數(shù)。必須在應(yīng)用對(duì)象創(chuàng)建之后 導(dǎo)入視圖模塊。這里是 __init__.py 的一個(gè)例子:
from flask import Flask
app = Flask(__name__)
import yourapplication.views
而 views.py 應(yīng)該看起來(lái)像這樣:
from yourapplication import app
@app.route('/')
def index():
return 'Hello World!'
您最終應(yīng)該得到的程序結(jié)構(gòu)應(yīng)該是這樣:
/yourapplication
/runserver.py
/yourapplication
/__init__.py
/views.py
/static
/style.css
/templates
layout.html
index.html
login.html
...
循環(huán)導(dǎo)入
每個(gè) Python 程序員都會(huì)討厭他們,而我們反而還添加了幾個(gè)進(jìn)去: 循環(huán)導(dǎo)入(在兩個(gè)模塊相互依賴對(duì)方的時(shí)候,就會(huì)發(fā)生循環(huán)導(dǎo)入)。在這里 views.py 依賴于 __init__.py。通常這被認(rèn)為是個(gè)不好的主意,但是 在這里實(shí)際上不會(huì)造成問題。之所以如此,是因?yàn)槲覀儗?shí)際上沒有在 __init__.py 里使用這些視圖,而僅僅是保證模塊被導(dǎo)入了。并且,我們是 在文件的結(jié)尾這么做的。
這種做法仍然有些問題,但是如果您想要使用修飾器,那么沒有 其他更好的方法了。
如果您有規(guī)模較大的應(yīng)用,建議您將他們分拆成小的組,讓每個(gè)組 接口于藍(lán)圖提供的輔助功能。關(guān)于這一主題進(jìn)一步的介紹請(qǐng)參考 用藍(lán)圖實(shí)現(xiàn)模塊化的應(yīng)用 這一章節(jié)的文檔
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: