Skip to main content

Flask-based web forms for database models with auto-generated forms and admin interface

Project description

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

Project details


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.

Supported by

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