2013-01-19 75 views
39

我剛剛創建了一個燒瓶應用程序,到目前爲止,我的「Hello world!」有一個路由器。模板。Flask應用程序中的常用文件夾/文件結構

我想添加一些(很多)更多的功能,但我不知道如何構建應用程序目錄。

構建Flask應用程序的最常用方法是什麼?例如,我應該爲我的所有路線創建一個routes.py嗎? SQLAlchemy的東西去哪了? 模型應該在models.py

回答

25

您應該查看Flask文檔的Patterns部分中的Larger Applications頁面:http://flask.pocoo.org/docs/patterns/packages/。這似乎是大多數人在應用程序調用包而不是模塊時遵循的模型。我相信views.py就是你所說的routes.py。之後,模型將在models.py,形式將進入forms.py

+1

我不明白的是,爲什麼我們只有一個文件,爲所有的車型? 「每檔一檔」練習呢?如果某些模型相當大?我們是否應該將一些邏輯轉移到其他模塊中?而且,如果我想讓我的模型處於單獨的文件中,我應該只創建一個模型「模型」?謝謝! – lime

+0

@lime,當有更多的模型時如何構建項目?我可以幫助我。 –

+1

@lime我不是「每個文件一個類的粉絲」。我發現更長,重複的導入路徑非常麻煩。除非將所有內容都導入到'__init __。py'文件中,否則這些導入文件會導致很多額外的導入操作,從而導致難以維護。也就是說,你可以自由地構建你的項目,但是你願意。我只是提供許多人遵循的會議。 – dirn

7

FlaskApp目錄的示例:

yourapp/ 
    /yourapp 
     /run.py 
     /config.py 
     /yourapp 
      /__init__.py 
      /views.py 
      /models.py 
      /static/ 
       /main.css 
      /templates/ 
       /base.html 
     /requirements.txt 
     /yourappenv 

run.py - 包含將導入應用程序並啓動開發服務器的實際python代碼。
config.py - 爲您的應用程序存儲配置。
__init__.py - 初始化您的應用程序,創建一個Flask應用程序實例。
views.py - 這是定義routes的地方。
models.py - 這是您爲應用程序定義模型的地方。
static - 包含靜態文件,即CSS,Javascript,圖像
templates - 這是您存儲您的html模板的位置即index.htmllayout.html
requirements.txt - 這是您存儲包依賴關係,您可以使用pip
yourappenv - 你的虛擬環境對於發展

+0

對於'require.txt'和'venv'。 –

4

我想說,如果你分割應用程序中使用分區,而不是功能結構。 我提倡這一點,因爲您在任何時候都更有可能在這些部門組件中的一個上工作。

這種類型的結構非常適合市場或SaaS應用程序,其中不同的用戶組使用不同類型的視圖。 API only flask應用程序我可能會使用功能分割。

以下是來自Flask Blueprints的示例。藍圖基本上是文件化的建議,如何將Flask應用程序拆分爲更易於管理的部分。更多信息,請訪問:http://exploreflask.com/en/latest/blueprints.html

以下是分割分割的示例。瞭解每個功能如何組合在一起。

yourapp/ 
    __init__.py 
    admin/ 
     __init__.py 
     views.py 
     static/ 
     templates/ 
    home/ 
     __init__.py 
     views.py 
     static/ 
     templates/ 
    control_panel/ 
     __init__.py 
     views.py 
     static/ 
     templates/ 
    models.py 

這裏是功能實例>

yourapp/ 
    __init__.py 
    static/ 
    templates/ 
     home/ 
     control_panel/ 
     admin/ 
    views/ 
     __init__.py 
     home.py 
     control_panel.py 
     admin.py 
    models.py