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