Flask app中的常见文件夹/文件结构

时间:2013-01-19 14:46:28

标签: python flask

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

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

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

10 个答案:

答案 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.htmllayout.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骨架-

  1. minimal skeleton

    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

  2. django like skeleton

    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/