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 приветствуются.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbwebform-1.0.1.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dbwebform-1.0.1-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file dbwebform-1.0.1.tar.gz.

File metadata

  • Download URL: dbwebform-1.0.1.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for dbwebform-1.0.1.tar.gz
Algorithm Hash digest
SHA256 44d75764664a33dbeba4de381d844de133a24aeac01de2d87e00bbdd59531e6d
MD5 96f4bcc6031249091ce6ecb562c93275
BLAKE2b-256 304133da47a1e8ae43d86ca7554940b752739c5edd3aa61712dcc9e1809cd6fd

See more details on using hashes here.

File details

Details for the file dbwebform-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: dbwebform-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for dbwebform-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 033e24488064063ea2e7c17af601c683ce57de16a4524cbbc57121a4932a8639
MD5 16d0203a707828dc0869dbd5e1d6a656
BLAKE2b-256 7e631b41a7a71a64c1d06afd269c5115f13f79e536425bb8479983ab39366978

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page