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

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

[[420076]]

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

Mock式结构

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

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

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

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

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

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

再创建一个order.py文件:

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

项目结构如下所示:

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

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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 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/ 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

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

参考资料:

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

程序员代码互联网

2019-08-19 09:21:36

程序员Bug代码

2024-09-27 11:38:49

2018-06-23 13:49:56

苹果谷歌手机

2024-01-05 08:37:41

前端项目开发

2016-03-04 14:14:02

电话免费越洋

2015-06-18 11:04:58

2022-07-07 19:44:22

Python 3.1

2024-08-05 01:28:26

2021-10-18 13:42:52

加密货币金融工具

2018-07-06 00:09:47

2023-03-13 08:09:03

Protobuffeature分割

2022-01-16 07:02:07

物联网平台物联网IOT

2020-09-17 11:02:58

Go 开源技术

2018-11-28 09:14:41

交换机网络安防
点赞
收藏

51CTO技术栈公众号