Общая структура папок / файлов в приложении Flask

Я только что создал приложение фляги, и до сих пор у меня есть маршрутизатор для моего "Hello world!" шаблон.

Я хотел бы добавить немного (намного) больше функциональности, но мне интересно, как я должен структурировать каталог приложения.

Какой самый распространенный способ структурирования приложения Flask? Например, я должен создать routes.py для всех моих маршрутов? Куда идут вещи по SQLAlchemy? Должны ли модели быть в models.py?

12 ответов

Решение

Вам следует посетить страницу "Большие приложения" в разделе "Шаблоны" документации Flask: http://flask.pocoo.org/docs/patterns/packages/. Кажется, что это модель, которой следуют большинство людей, когда их приложение вызывает пакет, а не модуль.

я верю views.py это то, что вы называете routes.py, После этого модели будут идти в models.py, формы будут идти в forms.py, так далее.

Пример каталога 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 - ваша виртуальная среда для разработки

Я бы сказал, что если вы разбиваете приложение, используйте разделенную, а не функциональную структуру. Я защищаю это, потому что вы, скорее всего, будете работать над одним из этих компонентов подразделения в любое время.

Этот тип структуры хорошо подходит для приложений на рынке или приложений 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

Я думаю, что колба это микро рамки, и теперь вы должны решить, как создавать файлы и папки.

я использую этот способ:

это около структуры Джанго

Я предлагаю вам увидеть какой-то проект, чтобы дать вам то, что вы хотите

Любой, кто ищет простую, удобную для начинающих структуру для проекта фляги, может найти это полезным:

   |__movies 
     |__run.py 
     |__app     
        ├── templates
        │   └── index.html
        │   └── signup.html
        └── __init__.py
        └── routes.py

Здесь "фильмы" - это название основного приложения. Он содержит "run.py" и папку "app". Папка "app" содержит все необходимые файлы фляги, такие как папка "templates", "__init __.py" и "rout.py".

Содержание:

run.py:

from app import app

__init.py__:

from flask import Flask

app = Flask(__name__)

from app import routes


app.run(debug=True)

rout.py:

from app import app

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

Красота фляги есть - она ​​очень гибкая. Вы можете легко создать 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

  2. Джанго, как скелет

    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

Вы можете получить вдохновение от шаблонов печенья здесь, чтобы ускорить разработку вашего приложения

Вот основная файловая структура фляги, которую я регулярно использую.

yourapp/
static/
    js
    css
    img

templates/
    home.html
    index.html

app.py

В папке static находятся все статические файлы сайта. Папка шаблонов содержит все HTML-страницы. а app.py содержит ваши представления Python.

Я решил вложить папку с исходным кодом в 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.

В flask мы можем поддерживать структуру mvc, например, как отдельные все мысли, например, 1 папка Templets содержит все файлы html 2 статическая папка содержит все файлы, связанные с css и boostrap 3 определяемая пользователем папка db для подключения к базе данных и операций crud 4 определяемая пользователем папка модели для доступа / привязка данных из Templets / front-end к db / back-end подключению и после основного файла активности
для ссылки на структуру ссылочного файла flask, как показано ниже https://flask.palletsprojects.com/en/1.1.x/tutorial/layout/

Хорошая идея - найти скелеты / шаблоны проектов на github

например вы можете посмотреть на это

Для больших проектов вот как выглядит моя структура каталогов

      app_name(root folder)
│  .env
│  .gitignore
│  .gitattributes
│  README.MD
│  pyproject.toml
│
└── app(source code)
│   │   __init__.py
│   │   __main__.py
│   │   db.py
│   │   auth.py
│   │   forms.py
│   │   utils.py
│   │   config.py
│   │
│   └─── routes
│          __init__.py
│          views.py
│          api.py
│          auth.py
│
└─ resources
│   |─── static
│   │       css
│   │       js        
│   │       images
│   │
│   └─── templates
│           base
|           components
│
└─ tests
└─ venv
└─ docs
Другие вопросы по тегам