项目结构二三事
之前我們只用一個hello.py就能完成了flask創建一個簡單的web應用,首先讓我們看下之前文件組織形式。
簡單項目結構
在mysite文件下有3個頂層文件:migration負責數據庫遷移;static存放靜態文件如css,js,images等;templates存放網頁。hello.py負責啟動應用,data.sqlite存放數據。
看起來不錯,如果我希望為這個WEB增加多一些應用(app)呢,hello.py是不是會越來越大呢?會不會越來越難以管理呢?那么目前的結構就需要升級了,好讓hello.py瘦身。
如果光看文件目錄的話,大致新建一個文件夾(如flasky),然后把原先的文件夾(如mysite)重命名為app,把hello.py重命名為__Init__.py.
當然這樣做之后,你用python app/__init__.py是無法啟動程序的
,因為 Python 不希望包內的模塊成為啟動文件。當然這又不是什么大不了的事情,與app同級路徑下新建一個manage.py,內部代碼如下:
這樣時候再運行一下試試看?是不是一又可以用了。
但是說好的hello.py瘦身,你只是換個名字而已呀!
首先看下我們hello.py,內容太多,多圖預警
A B C D大致可以把原先的hello.py分為以下幾個部分:所需庫導入;應用設置(app.config);程序擴展功能(xxxx=xxxx(app);數據庫模型(class xxx);視圖函數(index())和錯誤處理部分。
既然hello.py(__init__.py)其實看成多個功能模塊的組合,那么就把這些功能拆分為各個py文件,然后__init__.py導入各個模塊進行加載。
那么最新的結構如下
但是這個時候問題來了view.py的app是__init__.py中定義的,而__init__.py又要導入views才能返回頁面,就變成你中有我,我中 有你,并且運行還出現各種問題,但是對于我那么懶得人,需要一個新的辦法來解決。下篇介紹一個 Modular Applications with Blueprints藍圖先來解決這個煩人的問題。
所以__init__.py還是需要像之前一樣胖,下一樣進行修改。
總結
- 上一篇: shdocvw.dll是什么
- 下一篇: 只读文件系统