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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44d75764664a33dbeba4de381d844de133a24aeac01de2d87e00bbdd59531e6d
|
|
| MD5 |
96f4bcc6031249091ce6ecb562c93275
|
|
| BLAKE2b-256 |
304133da47a1e8ae43d86ca7554940b752739c5edd3aa61712dcc9e1809cd6fd
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
033e24488064063ea2e7c17af601c683ce57de16a4524cbbc57121a4932a8639
|
|
| MD5 |
16d0203a707828dc0869dbd5e1d6a656
|
|
| BLAKE2b-256 |
7e631b41a7a71a64c1d06afd269c5115f13f79e536425bb8479983ab39366978
|