我試圖用Flask創建一個簡單但不平凡的應用程序,並且我一直遇到在文檔中沒有很好解釋的情況。燒瓶應用程序的結構
我想不同模塊之間被分割我的應用程序,但它看起來像它很難從其他地方比主模塊進入主app
對象(或db
從flask-sqlalchemy
)。看起來你必須真正寫出你自己的方式來把它看作是一切都可以訪問的全局,這需要一些有問題的代碼和一些時間。
app
和db
都是在實例化主應用程序的級別創建的,每個示例都假定它們在頂層可用。但是,如果我將不同的url處理程序分成不同的模塊,我將失去使用@app.route
修飾器的能力。我可以用app.add_url_rule('/...', some.module...)
解決這個問題,但是再次,應用程序不會傳遞給該函數。
同樣的事情發生在db
- 我不知道我是否應該堅持到g
,或通過app
以某種方式訪問它。這樣做並不能幫助我將模型移動到單獨的模塊中,但是如何在導入模型時訪問db
?所有示例再次假定它只是作爲局部變量提供。
我錯過了一些明顯的東西,還是我想在這裏用錯誤的任務燒瓶?
裝飾器只是功能包裝。您可以創建一個封裝所有服務器邏輯的類,並將類中的所有'db'和'app'變量存儲在該類中。 – Blender 2012-07-13 00:12:50
@Blender當然,有很多方法可以手工解決這個問題。我真正想知道的是,如果有任何標準的方式來處理它,並且如果它似乎完全從文檔中丟失,那麼還有沒有更多的驚喜。我期待從瓶子本身出現某種更明顯的解決方案。 – viraptor 2012-07-13 00:19:51
您可以使用Blueprint – user956424 2013-06-24 07:33:53