82

我刚刚创建了一个烧瓶应用程序,到目前为止,我有一个用于“Hello world!”的路由器。模板。

我想添加一点(很多)更多功能,但我想知道我应该如何构建应用程序目录。

构建 Flask 应用程序的最常见方式是什么?例如,我应该为我的routes.py所有路线创建一个吗?SQLAlchemy 的东西去哪儿了?模型应该在models.py吗?

4

11 回答 11

45

您应该查看 Flask 文档的 Patterns 部分中的 Larger Applications 页面:http: //flask.pocoo.org/docs/patterns/packages/。当他们的应用程序调用包而不是模块时,这似乎是大多数人遵循的模型。

我相信views.py这就是你所说的routes.py。之后,模型将进入models.py,表格将进入forms.py,等等。

于 2013-01-20T03:16:42.810 回答
33

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- 您的虚拟开发环境

于 2016-06-12T20:21:10.683 回答
23

我会说,如果您拆分应用程序使用分区而不是功能结构。我提倡这一点,因为您更有可能在任何时候处理这​​些部门组件中的一个。

这种类型的结构非常适合不同用户组使用不同类型视图的市场或 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
于 2016-11-11T17:50:04.837 回答
12

我认为烧瓶是微型框架,现在您必须决定如何创建文件和文件夹。

我用这种方式:

这在 Django 结构附近

我建议你看一些项目来给你你想要的

于 2013-01-20T11:02:19.090 回答
9

任何为烧瓶项目寻找简单的初学者友好结构的人都可能会发现这很有帮助:

   |__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!"
于 2018-04-13T11:17:54.410 回答
8

烧瓶的美在于它的灵活性。您可以轻松构建 django 之类的项目结构。Django 普及了应用程序中的功能抽象并使它们可重用,但对于许多项目来说这可能是一种过度杀伤力。

但是用烧瓶你可以去任何一种方式。编写可重用的应用程序或编写简单的应用程序。检查这些千篇一律的骷髅 -

  1. 最小骨架
    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
  1. django 像骨架
    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

这是一篇很好的文章

于 2019-04-26T06:50:46.130 回答
5

您可以从此处的 cookiecutter 模板中获得灵感,快速开始您的应用开发

于 2014-11-22T13:31:21.343 回答
3

这是我经常使用的烧瓶的基本文件结构。

yourapp/
static/
    js
    css
    img

templates/
    home.html
    index.html

app.py

static 文件夹包含网站的所有静态文件。模板文件夹包含所有 HTML 页面。app.py 包含你的 python 视图。

于 2020-04-24T20:53:17.337 回答
0

好主意是在 github 上搜索 sceletons/template 项目

例如你可以看看这个

于 2020-03-03T22:53:36.390 回答
0

在烧瓶中,我们可以将 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 /

于 2020-12-06T16:57:45.187 回答
0

我决定将源代码文件夹嵌套在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.

于 2021-11-07T04:24:22.733 回答