Flask官方推薦項目結構竟然是這樣
Flask有個特點:千人千面。它沒有硬性規定,你必須采用哪種項目結構來組織代碼,這就導致每個人都按照自己的習慣和喜好來寫,寫出來的項目結構往往是千差萬別。在Flask2.0的官方文檔中,有一節內容介紹了Flask的項目結構,我們可以窺探一番。
Mock式結構
Flask是很適合用來做Mock的,比如調試前端代碼時,后端服務不一定準備好了,那么就可以先用Flask模擬后端接口返回數據。
Mock式項目結構很簡單,創建一個文件夾:
- $ mkdir flask-tutorial
- $ cd flask-tutorial
然后在這個文件夾下面隨便創建一些.py文件,來寫Mock代碼即可。
比如創建一個hello.py文件:
- from flask import Flask
- app = Flask(__name__)
- @app.route('/hello')
- def hello():
- return 'Hello, World!'
再創建一個order.py文件:
- from flask import Flask
- app = Flask(__name__)
- @app.route('/order')
- def order():
- return {"id": 123456789}
項目結構如下所示:
- /home/user/Projects/flask-tutorial
- ├── hello.py
- ├── order.py
Project式結構
Flask最正統的用法是寫Web后端服務,相對于Django來說,Flask的項目結構要簡潔很多,如下所示:
- /home/user/Projects/flask-tutorial
- ├── flaskr/
- │ ├── __init__.py
- │ ├── db.py
- │ ├── schema.sql
- │ ├── auth.py
- │ ├── blog.py
- ├── tests/
- │ ├── conftest.py
- │ ├── data.sql
- │ ├── test_factory.py
- │ ├── test_db.py
- │ ├── test_auth.py
- │ └── test_blog.py
- ├── venv/
- ├── setup.py
- └── MANIFEST.in
- flaskr/ 存放項目主要源文件的包。
- tests/ 存放測試代碼的目錄。(使用pytest框架來寫)
- venv/ Python虛擬環境目錄。
- setup.py 項目構建信息的描述。
- MANIFEST.in 項目包含或排除其他文件夾的說明。
可以看出來官方并沒有給出flaskr/更為具體的目錄結構設計了,項目規模不同,編程經驗不一,自由發揮空間越大,結構差異化就越明顯。這跟Flask的設計理念其實是保持一致的,Flask只提供核心功能,不限制你做什么,把選擇權交給你自己。
Git忽略文件
如果采用Git對源代碼進行管理,可以配置下面的.gitignore文件:
- venv/
- *.pyc
- __pycache__/
- instance/
- .pytest_cache/
- .coverage
- htmlcov/
- dist/
- build/
- *.egg-info/
把這些文件夾和文件,排除到提交的代碼之外。
參考資料:
https://flask.palletsprojects.com/en/2.0.x/tutorial/layout/
https://blog.csdn.net/cckavin/article/details/97945913