Skip to main content

dbwebform — документация

dbwebform — это пакет для быстрого создания веб-форм на основе моделей базы данных с использованием Flask, SQLAlchemy и WTForms. Пакет предоставляет готовый класс App, который автоматизирует настройку приложения, работу с базой данных и отображение форм.


Установка

pip install dbwebform

Быстрый старт

1. Создание модели и формы

Используйте db-model-generator для автоматической генерации модели и формы:

# Рекомендуемые параметры db-model-generator
db-model-generator sqlite:///example.db users orm.py https://magilyasdoma.github.io/dbwebform/recommended-config.json -a

2. Создание приложения

from dbwebform import App
from orm import Model, Form, db


app = App(
    __name__,
    db=db,
    model_class=Model,
    form_class=Form,
    title="Регистрация пользователя",
    notification_text="Пользователь успешно создан",
    port=5000
)

if __name__ == "__main__":
    app.run(debug=True)

Конфигурация класса App

Параметры конструктора:

Параметр Тип По умолчанию Описание
db SQLAlchemy — Экземпляр SQLAlchemy для работы с БД
model_class db.Model — Класс модели SQLAlchemy
form_class FlaskForm — Класс формы WTForms
port int 8000 Порт для запуска сервера
database_url str 'sqlite:///db.sqlite3' URL подключения к БД
title str "Создание нового объекта" Заголовок страницы
notification_text str "Объект создан" Текст уведомления после отправки формы
index_template str 'dbwebform/index.html' Путь к шаблону формы
model_fields Iterable[str] None Список полей модели для сохранения (если None — сохраняются все)

Структура пакета

dbwebform/
├── __init__.py
├── app.py
├── templates/
│   ├── dbwebform/
│   │   ├── base.html
│   │   └── index.html
└── favicon.ico

Шаблоны

base.html

Базовый шаблон с подключением:

  • Bootstrap 5

  • hrenpack-theme-style

  • Темная/светлая тема

  • Иконка базы данных

index.html

Шаблон формы. Наследуется от base.html. Может быть переопределён через параметр index_template.

Блоки для расширения:

  • {% block index_pre_content %} — контент перед формой

  • {% block index_post_content %} — контент после формы

  • {% block index_scripts %} — дополнительные скрипты


Методы класса App

_init_db(database_url: str)

Инициализирует базу данных, создаёт все таблицы.

_get_form_model_data(form) -> dict

Фильтрует данные формы для сохранения в модель (если задан model_fields).

_create_new_object(form)

Создаёт и сохраняет новый объект в БД.

index()

Обрабатывает GET/POST запросы, отображает форму и сохраняет данные.

favicon()

Возвращает иконку для сайта.


Пример кастомизации шаблона

<!-- my_custom_index.html -->
{% extends 'dbwebform/base.html' %}

{% block index_pre_content %}
    <div class="alert alert-info">
        Заполните все поля формы ниже.
    </div>
{% endblock %}

{% block index_scripts %}
    <script>
        console.log("Форма загружена!");
    </script>
{% endblock %}

Запуск приложения

app = App(
    __name__,
    db=db,
    model_class=MyModel,
    form_class=MyForm,
    port=8080
)

app.run(debug=True, host="0.0.0.0")

Зависимости

Пакет требует установки следующих зависимостей:

flask~=3.1.1
sqlalchemy==2.0.44
flask-sqlalchemy==3.1.1
flask-wtf==1.2.2
wtforms==3.2.1
db-model-generator>=1.5.1, <=2.0.0
hrenpack>=2.2.2, <=3.0.0
Пакет Версия Назначение
flask ~=3.1.1 Веб-фреймворк для создания приложения
sqlalchemy ==2.0.44 ORM для работы с базой данных
flask-sqlalchemy ==3.1.1 Интеграция SQLAlchemy с Flask
flask-wtf ==1.2.2 Интеграция WTForms с Flask
wtforms ==3.2.1 Создание и валидация веб-форм
db-model-generator ==1.4.2 Автогенерация моделей и форм из схемы БД
hrenpack >=2.2.2, <=3.0.0 Набор утилит, стилей и компонентов для фронтенда

Все зависимости устанавливаются автоматически при установке пакета через pip.

Лицензия

Распространяется под лицензией MIT. Полный текст лицензии доступен в файле LICENSE или по ссылке: MIT License

Поддержка и вклад

Для предложений и сообщений об ошибках создавайте issue в репозитории проекта. Pull-requests приветствуются.

Metadata

Release files for dbwebform 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dbwebform 1.0.1
File Size Uploaded
dbwebform-1.0.1.tar.gz 24.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dbwebform 1.0.1
File Interpreter ABI Platform
dbwebform-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 45.6 kB

Release files / dbwebform-1.0.1.tar.gz

Download URL dbwebform-1.0.1.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
44d75764664a33dbeba4de381d844de133a24aeac01de2d87e00bbdd59531e6d
BLAKE2b-256 checksum
How to use checksums
304133da47a1e8ae43d86ca7554940b752739c5edd3aa61712dcc9e1809cd6fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / dbwebform-1.0.1-py3-none-any.whl

Download URL dbwebform-1.0.1-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
033e24488064063ea2e7c17af601c683ce57de16a4524cbbc57121a4932a8639
BLAKE2b-256 checksum
How to use checksums
7e631b41a7a71a64c1d06afd269c5115f13f79e536425bb8479983ab39366978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page