Flask官方推荐项目结构竟然是这样

开发 项目管理
Flask有个特点:千人千面。它没有硬性规定,你必须采用哪种项目结构来组织代码,这就导致每个人都按照自己的习惯和喜好来写,写出来的项目结构往往是千差万别。

[[420076]]

Flask有个特点:千人千面。它没有硬性规定,你必须采用哪种项目结构来组织代码,这就导致每个人都按照自己的习惯和喜好来写,写出来的项目结构往往是千差万别。在Flask2.0的官方文档中,有一节内容介绍了Flask的项目结构,我们可以窥探一番。

Mock式结构

Flask是很适合用来做Mock的,比如调试前端代码时,后端服务不一定准备好了,那么就可以先用Flask模拟后端接口返回数据。

Mock式项目结构很简单,创建一个文件夹:

  1. $ mkdir flask-tutorial 
  2. $ cd flask-tutorial 

然后在这个文件夹下面随便创建一些.py文件,来写Mock代码即可。

比如创建一个hello.py文件:

  1. from flask import Flask 
  2.  
  3. app = Flask(__name__) 
  4.  
  5.  
  6. @app.route('/hello'
  7. def hello(): 
  8.     return 'Hello, World!' 

再创建一个order.py文件:

  1. from flask import Flask 
  2.  
  3. app = Flask(__name__) 
  4.  
  5.  
  6. @app.route('/order'
  7. def order(): 
  8.     return {"id": 123456789} 

项目结构如下所示:

  1. /home/user/Projects/flask-tutorial 
  2. ├── hello.py 
  3. ├── order.py 

Project式结构

Flask最正统的用法是写Web后端服务,相对于Django来说,Flask的项目结构要简洁很多,如下所示:

  1. /home/user/Projects/flask-tutorial 
  2. ├── flaskr/ 
  3. │   ├── __init__.py 
  4. │   ├── db.py 
  5. │   ├── schema.sql 
  6. │   ├── auth.py 
  7. │   ├── blog.py 
  8. ├── tests/ 
  9. │   ├── conftest.py 
  10. │   ├── data.sql 
  11. │   ├── test_factory.py 
  12. │   ├── test_db.py 
  13. │   ├── test_auth.py 
  14. │   └── test_blog.py 
  15. ├── venv/ 
  16. ├── setup.py 
  17. └── MANIFEST.in 
  • flaskr/ 存放项目主要源文件的包。
  • tests/ 存放测试代码的目录。(使用pytest框架来写)
  • venv/ Python虚拟环境目录。
  • setup.py 项目构建信息的描述。
  • MANIFEST.in 项目包含或排除其他文件夹的说明。

可以看出来官方并没有给出flaskr/更为具体的目录结构设计了,项目规模不同,编程经验不一,自由发挥空间越大,结构差异化就越明显。这跟Flask的设计理念其实是保持一致的,Flask只提供核心功能,不限制你做什么,把选择权交给你自己。

Git忽略文件

如果采用Git对源代码进行管理,可以配置下面的.gitignore文件:

  1. venv/ 
  2.  
  3. *.pyc 
  4. __pycache__/ 
  5.  
  6. instance/ 
  7.  
  8. .pytest_cache/ 
  9. .coverage 
  10. htmlcov/ 
  11.  
  12. dist/ 
  13. build/ 
  14. *.egg-info/ 

把这些文件夹和文件,排除到提交的代码之外。

参考资料:

https://flask.palletsprojects.com/en/2.0.x/tutorial/layout/

 

https://blog.csdn.net/cckavin/article/details/97945913

 

责任编辑:武晓燕 来源: dongfanger
相关推荐

2020-09-29 06:45:49

JDK

2020-12-15 08:05:40

路由器服务器网络层

2021-07-28 06:51:08

Nacos代理模式

2019-12-24 11:00:51

NVMeSSDSATA

2024-06-17 00:04:00

JavaScriptWebRust开发

2018-05-02 09:38:02

程序员代码互联网

2024-09-27 11:38:49

2019-08-19 09:21:36

程序员Bug代码

2018-06-23 13:49:56

苹果谷歌手机

2024-01-05 08:37:41

前端项目开发

2015-06-18 11:04:58

2016-03-04 14:14:02

电话免费越洋

2022-07-07 19:44:22

Python 3.1

2024-08-05 01:28:26

2021-10-18 13:42:52

加密货币金融工具

2023-03-13 08:09:03

Protobuffeature分割

2018-07-06 00:09:47

2022-01-16 07:02:07

物联网平台物联网IOT

2020-09-17 11:02:58

Go 开源技术

2020-08-19 09:23:10

传输网络WDM网络技术
点赞
收藏

51CTO技术栈公众号