Flask官方推薦項目結構竟然是這樣
Flask有個特點:千人千面。它沒有硬性規(guī)定,你必須采用哪種項目結構來組織代碼,這就導致每個人都按照自己的習慣和喜好來寫,寫出來的項目結構往往是千差萬別。在Flask2.0的官方文檔中,有一節(jié)內容介紹了Flask的項目結構,我們可以窺探一番。
Mock式結構
Flask是很適合用來做Mock的,比如調試前端代碼時,后端服務不一定準備好了,那么就可以先用Flask模擬后端接口返回數據。
Mock式項目結構很簡單,創(chuàng)建一個文件夾:
- $ mkdir flask-tutorial
 - $ cd flask-tutorial
 
然后在這個文件夾下面隨便創(chuàng)建一些.py文件,來寫Mock代碼即可。
比如創(chuàng)建一個hello.py文件:
- from flask import Flask
 - app = Flask(__name__)
 - @app.route('/hello')
 - def hello():
 - return 'Hello, World!'
 
再創(chuàng)建一個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最正統(tǒng)的用法是寫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虛擬環(huán)境目錄。
 - setup.py 項目構建信息的描述。
 - MANIFEST.in 項目包含或排除其他文件夾的說明。
 
可以看出來官方并沒有給出flaskr/更為具體的目錄結構設計了,項目規(guī)模不同,編程經驗不一,自由發(fā)揮空間越大,結構差異化就越明顯。這跟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















 
 
 











 
 
 
 