前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Flask官方推荐项目结构竟然是这样

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

作者头像
dongfanger
发布2021-09-06 15:22:07
发布2021-09-06 15:22:07
2.6K00
代码可运行
举报
文章被收录于专栏:dongfangerdongfanger
运行总次数:0
代码可运行

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

Mock式结构

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

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

代码语言:javascript
代码运行次数:0
复制
$ mkdir flask-tutorial
$ cd flask-tutorial

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

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

代码语言:javascript
代码运行次数:0
复制
from flask import Flask

app = Flask(__name__)


@app.route('/hello')
def hello():
    return 'Hello, World!'

再创建一个order.py文件:

代码语言:javascript
代码运行次数:0
复制
from flask import Flask

app = Flask(__name__)


@app.route('/order')
def order():
    return {"id": 123456789}

项目结构如下所示:

代码语言:javascript
代码运行次数:0
复制
/home/user/Projects/flask-tutorial
├── hello.py
├── order.py

Project式结构

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

代码语言:javascript
代码运行次数:0
复制
/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文件:

代码语言:javascript
代码运行次数:0
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mock式结构
  • Project式结构
  • Git忽略文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档