Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.01.2023
Сообщений: 10

PGHtml | Шаблонизатор с использованием PostgreSQL

25.02.2023, 10:49. Показов 1031. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день, коллеги.

Сделал собой утилиту командной строки, которая создает HTML, JS, JSON и другие типы файлы с использованием данных, получаемых из базы данных PostgreSQL.
Файл создается из файла-источника, в котором проводится подстановка(замена) тегов и переменных.

Исходный код открыт, выложен на GitHub https://github.com/PGHtml/PGHtml, можно форкать и копировать.

Пример замены

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- единичное значение из базы данных -->
<pghtml-sql>
select user
</pghtml-sql>
 
<!-- множественые значения -->
<pghtml-sql>
select tablename from pg_tables
  where schemaname='pg_catalog' limit 5
</pghtml-sql>
 
<!-- включение файла example_include.html -->
<pghtml-include>example_include.html</pghtml-include>
преобразовывается в

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<!-- единичное значение из базы данных -->
postgres
 
<!-- множественые значения -->
pg_statistic
pg_type
pg_foreign_table
pg_authid
pg_statistic_ext_data
 
<!-- включение файла example_include.html -->
[ file example_header.html ]
Ключевые особенности

Проверка на изменение - если содержимое результирующего файл не изменилось, то файл не перезаписывается и, соответственно, web-сервер не выполняет публикацию (deploy)
Импорт - реализована поддержка импорта других файлов (например, фрагмента HTML или данных в формате JSON)
Список изменений - возможно сформировать файл-список со списком измененных файлов
Обработка ошибок - при возникновении ошибки (например, при выполнении SQL запроса) обработка продолжается, в лог (stderr) выводится расширенная информация и по окончании выполнения утилита возвращает в ОС признак неуспешного выполнения (1). Это позволяет настроить мониторинг обновления данных на сайте
Указание обрабатываемых файлов - возможна обработка конкретных файлов, директорий с рекурсией и указанием расширений файлов. При этом определяются встроенные переменные, которые можно использовать при формировании ссылок и в SQL запросах. Рекомендуется указывать корневую директорию сайта
Переменные - поддерживаются переменные из командной строки, встроенные (директории, пути до файлов и т.д) и атрибуты тега при импорте файла
Неограниченная вложенность - поддерживается включение файлов внутри включаемого файла, многократное переопределение переменных и их использование внутри другой переменной
Условия и циклы - программирование внутри файлов не поддерживается, для реализации логики необходимо использовать хранимые процедуры PostgreSQL

Более подробно можно ознакомиться и скачать на сайте http://pghtml.org/ru/
Также сделан ролик на youtube https://www.youtube.com/watch?v=DJ9J-YWCmfs

Вопросы и конструктивная критика приветствуется, можно здесь или в личку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2023, 10:49
Ответы с готовыми решениями:

Авторизация в ASP.NET Core с использованием PostgreSQL
Добрый день. Я пытаюсь написать небольшую систему. На Постгре у меня есть таблица Пользователи с полями Id, username и Password. Также я...

Написать программу для работы с БД на Python с использованием Postgresql и QTableview
Есть у меня задание, накидать программу для работы с бд (сохранение, удаление, отмена изменений, сортировка, поиск, фильтрация) с...

Не могу запустить проект (Django+postgreSQL) с использованием Docker на Windows
Сделал Dockerfile и docker-compose.yml, со следующим содержимым: FROM python:3 ENV PYTHONUNBUFFERED=1 WORKDIR /code/ COPY...

3
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
26.02.2023, 11:43
Цитата Сообщение от PGSuite Посмотреть сообщение
Шаблонизатор с использованием PostgreSQL
Но... зачем?)
0
0 / 0 / 0
Регистрация: 21.01.2023
Сообщений: 10
27.02.2023, 20:46  [ТС]
Инструмент предназначен для отображения на сайтах статической информации из базы данных, которая:
  • редко меняется (например, справочники)
  • подготовка требует длительного времени
  • не требует актуальность в режиме реального времени (например, ТОП товаров)

Описание на главной странице сайта https://pghtml.org/ru/#description

--
Также смотрел другие шаблонизаторы и решения с возможностью подключения к базе данных: простых и легковесных не обнаружил
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
28.02.2023, 02:51
Цитата Сообщение от PGSuite Посмотреть сообщение
Также смотрел другие шаблонизаторы и решения с возможностью подключения к базе данных: простых и легковесных не обнаружил
Наверное потому, что так не делают)

В чём вы для себя видите сложность хранения шаблона вне базы и заполнению его данными из этой базы? Не хотите в базу лишний раз сходить? Ну так кеш вам в руки.

А так получается хрупкое решение. Нужно периодически пинать какую-то стороннюю утилиту, которая всё равно будет базу опрашивать и перегенерировать эти шаблоны. Когда её надо пинать? Как-то же надо отслеживать, что данные изменились. Ещё, надо будет синхронизировать обращение к этой утилите, чтобы в несколько потоков она не пнулась, чтобы файлы шаблонов в параллель не переписывались, что к проблемам привести может. Её и пересобирать надо под каждую ОС на которой веб-приложение крутиться будет.

В общем, практическая ценность сомнительна. Больше проблем создаёт, нежели решает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2023, 02:51
Помогаю со студенческими работами здесь

При попытке подключится к postgresql с использованием zeos не найдены libpq81.dll и libpq.dll
Помогите, пожалуйста. Установил zeos (ZEOSDBO-6.6.6-stable) на Delphi 7, вроде всё встало нормально. пытаюсь установить соединение с...

Шаблонизатор
как вывести код &lt;div class='block01'&gt;Авторизация&lt;/div&gt; &lt;form id=&quot;form4&quot; action=&quot;/users/login.php&quot;...

шаблонизатор
Всем добрый день. Для одного проекта нужен небольшой шаблонизатор . Скрипт следующий: &lt;?php class html_generator { public...

Шаблонизатор
Здравствуйте, как сделать шаблонизатор без ООП. Прошу пример. Добавлено через 24 минуты Нужен шаблонизатор с тегами типа {username}...

Шаблонизатор js
Здравствуйте, есть преимущество использовать при разработки яваскрипт шаблонизатор? И они вообще на работе требуются? Подскажите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru