我刚刚创建了一个烧瓶应用程序,到目前为止,我有一个用于“Hello world!”的路由器。模板。
我想添加一点(很多)更多功能,但我想知道我应该如何构建应用程序目录。
构建 Flask 应用程序的最常见方式是什么?例如,我应该为我的routes.py
所有路线创建一个吗?SQLAlchemy 的东西去哪儿了?模型应该在models.py
吗?
您应该查看 Flask 文档的 Patterns 部分中的 Larger Applications 页面:http: //flask.pocoo.org/docs/patterns/packages/。当他们的应用程序调用包而不是模块时,这似乎是大多数人遵循的模型。
我相信views.py
这就是你所说的routes.py
。之后,模型将进入models.py
,表格将进入forms.py
,等等。
FlaskApp 目录的示例:
/yourapp
/run.py
/config.py
/app
/__init__.py
/views.py
/models.py
/static/
/main.css
/templates/
/base.html
/requirements.txt
/yourappenv
run.py
- 包含将导入应用程序并启动开发服务器的实际 python 代码。
config.py
- 为您的应用存储配置。
__init__.py
- 初始化您的应用程序,创建一个 Flask 应用程序实例。
views.py
- 这是routes
定义的地方。
models.py
- 这是您为应用程序定义模型的地方。
static
- 包含静态文件,即 CSS、Javascript、图像
templates
- 这是您存储html
模板的位置,即index.html
-layout.html
requirements.txt
这是您存储包依赖项的位置,您可以使用pip
yourappenv
- 您的虚拟开发环境
我会说,如果您拆分应用程序使用分区而不是功能结构。我提倡这一点,因为您更有可能在任何时候处理这些部门组件中的一个。
这种类型的结构非常适合不同用户组使用不同类型视图的市场或 SaaS 应用程序。仅 API 烧瓶应用程序我可能会使用功能拆分。
以下是来自 Flask Blueprints 的示例。蓝图本质上是记录了如何拆分 Flask 应用程序以获得更易于管理的部分的建议。更多信息请访问:http ://exploreflask.com/en/latest/blueprints.html
这是一个分区拆分的示例。查看每个功能如何组合在一起。
yourapp/
__init__.py
admin/
__init__.py
views.py
static/
templates/
home/
__init__.py
views.py
static/
templates/
control_panel/
__init__.py
views.py
static/
templates/
models.py
这是功能示例>
yourapp/
__init__.py
static/
templates/
home/
control_panel/
admin/
views/
__init__.py
home.py
control_panel.py
admin.py
models.py
我认为烧瓶是微型框架,现在您必须决定如何创建文件和文件夹。
我用这种方式:
这在 Django 结构附近
我建议你看一些项目来给你你想要的
任何为烧瓶项目寻找简单的初学者友好结构的人都可能会发现这很有帮助:
|__movies
|__run.py
|__app
├── templates
│ └── index.html
│ └── signup.html
└── __init__.py
└── routes.py
这里的“电影”是主应用程序的名称。它包含“ run.py ”和一个名为“ app ”的文件夹。“ app ”文件夹包含所有必要的烧瓶文件,例如“ templates ”文件夹、“ __init __.py ”和“ routes.py ”。
内容:
运行.py:
from app import app
__init.py__:
from flask import Flask
app = Flask(__name__)
from app import routes
app.run(debug=True)
路线.py:
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
烧瓶的美在于它的灵活性。您可以轻松构建 django 之类的项目结构。Django 普及了应用程序中的功能抽象并使它们可重用,但对于许多项目来说这可能是一种过度杀伤力。
但是用烧瓶你可以去任何一种方式。编写可重用的应用程序或编写简单的应用程序。检查这些千篇一律的骷髅 -
myproject
├── config.py
├── instance
│ └── config.py
├── myproject
│ ├── commands.py
│ ├── controllers.py
│ ├── extensions.py
│ ├── forms.py
│ ├── __init__.py
│ ├── models.py
│ ├── routes.py
│ └── ui
│ ├── static
│ │ ├── css
│ │ │ └── styles.css
│ │ └── js
│ │ └── custom.js
│ └── templates
│ └── index.html
├── README.md
├── requirements.txt
└── wsgi.py
myproject
├── config.py
├── development.py
├── instance
│ └── config.py
├── myproject
│ ├── auth
│ │ ├── controllers.py
│ │ ├── forms.py
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── routes.py
│ ├── helpers
│ │ ├── controllers.py
│ │ ├── __init__.py
│ │ └── models.py
│ ├── __init__.py
│ └── ui
│ └── templates
│ ├── 404.html
│ ├── 500.html
│ └── base.html
├── README.md
├── requirements.txt
├── tests
│ ├── auth
│ │ ├── __init__.py
│ │ └── test_controllers.py
│ └── __init__.py
└── wsgi.py
这是一篇很好的文章。
您可以从此处的 cookiecutter 模板中获得灵感,快速开始您的应用开发
这是我经常使用的烧瓶的基本文件结构。
yourapp/
static/
js
css
img
templates/
home.html
index.html
app.py
static 文件夹包含网站的所有静态文件。模板文件夹包含所有 HTML 页面。app.py 包含你的 python 视图。
好主意是在 github 上搜索 sceletons/template 项目
例如你可以看看这个
在烧瓶中,我们可以将 mvc 结构保持为独立的所有人都认为例如 1 Templets 文件夹包含所有 html 文件 2 静态文件夹包含所有 css 和 boostrap 相关文件 3 用于数据库连接和 crud 操作的用户定义的 db 文件夹 4 用于访问的用户定义的模型文件夹/ 将来自 Templets/front-end 的数据绑定到 db/back-end 连接,并在主要活动文件之后
用于参考烧瓶文件结构链接如下
https://flask.palletsprojects.com/en/1.1.x/tutorial/layout /
我决定将源代码文件夹嵌套在src/
.
my_flask_app (project folder)
├── app.py
├── setup.py
├── src/
│ ├── my_flask_app/ (source code folder)
│ │ ├── config.py
│ │ ├── errors.py
│ │ ├── forms.py
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── routes.py
│ │ ├── static/
│ │ └── templates/
│ └── my_flask_app.egg-info/
|
└── tests/ (test folder)
正因为如此,我添加package_dir={'': 'src'}
了setup.py
.