我刚刚创建了一个烧瓶应用程序,到目前为止我有一个路由器用于我的“Hello world!”模板。
我想添加一些(很多)更多功能,但我想知道我应该如何构建app目录。
构建Flask应用程序最常用的方法是什么?
例如,我应该为所有路线创建routes.py
吗?
SQLAlchemy的东西在哪里?
模型应该在models.py
吗?
答案 0 :(得分:32)
您应该查看Flask文档的Pattern部分中的Larger Applications页面:http://flask.pocoo.org/docs/patterns/packages/。它似乎是大多数人在应用程序需要包而不是模块时遵循的模型。
我相信views.py
就是你所说的routes.py
。之后,模型将进入models.py
,表单将进入forms.py
等等。
答案 1 :(得分:12)
FlaskApp目录的一个示例:
yourapp/
/yourapp
/run.py
/config.py
/yourapp
/__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
- 您的虚拟开发环境
答案 2 :(得分:10)
我认为flask是微框架,现在你必须决定如何创建文件和文件夹。
我用这种方式:
这是靠近Django结构
我建议你看一些项目给你你想要的东西
答案 3 :(得分:10)
我会说如果你拆分应用程序使用分区而不是功能结构。 我提倡这一点,因为你更有可能在任何时候使用其中一个部门组件。
这种类型的结构非常适合市场或SaaS应用程序,其中不同的用户组使用不同类型的视图。 API only flask app我可能会使用功能拆分。
以下是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
答案 4 :(得分:4)
您可以从这里的cookiecutter模板中获得灵感,以快速启动您的应用开发
答案 5 :(得分:4)
任何为烧瓶项目寻找简单的初学者友好型结构的人都会发现这有用:
|__movies
|__run.py
|__app
├── templates
│ └── index.html
│ └── signup.html
└── __init__.py
└── routes.py
此处' 电影'是主应用程序的名称。它包含' run.py '以及名为' app '的文件夹。 ' 应用'文件夹包含所有必要的烧瓶文件,例如' 模板'文件夹,' __ init __。py '和' routes.py '。
内容:
<强> run.py 强>:
from app import app
__ init.py __ :
from flask import Flask
app = Flask(__name__)
from app import routes
app.run(debug=True)
routes.py :
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
答案 6 :(得分:1)
这是我经常使用的烧瓶的基本文件结构。
yourapp/
static/
js
css
img
templates/
home.html
index.html
app.py
static文件夹包含网站的所有静态文件。 template文件夹包含所有HTML页面。 并且app.py包含您的python视图。
答案 7 :(得分:0)
烧瓶的美是-它非常灵活。您可以像项目结构一样轻松构建django。 Django普及了应用程序中的功能抽象,并使其可重用,但是对于许多项目而言,它可能是过大的。
但是使用烧瓶,您可以采取任何方式。编写可重复使用的应用程序或编写简单的应用程序。检查这些cookiecutter骨架-
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
答案 8 :(得分:0)
一个好主意是在github上的celeceles / template项目上挖洞
例如,您可以查看此
答案 9 :(得分:0)
在烧瓶中,我们可以像单独认为的那样维护mvc结构
例如
1 Templets文件夹包含所有html文件
2静态文件夹包含所有css和boostrap相关文件
3用户定义的db文件夹,用于db连接和crud操作
4用户定义的模型文件夹,用于访问/绑定Templets /前端到数据库/后端连接中的数据
和主要活动文件之后
供参考的烧瓶文件结构链接如下
https://flask.palletsprojects.com/en/1.1.x/tutorial/layout/