Mozilla использует в своих проектах Pyramid и у них есть
отличный модуль для создания REST API
https://cornice.readthedocs.org/en/latest/
Я создал небольшой пример, как это сделать на примере sadisplay.
sadisplay - это модуль который отображает модели SQLAlchemy в виде
UML
диаграммы.
pyramid_sacrud_example - пример работы sacrud в Pyramid вместе с
PostgreSQL
.
Для простых CRUD
действий с БД, можно воспользоваться модулем
action
из sacrud. Это немного сократит код и добавит
некоторой универсальности в ПО со сложной логикой.
Новая версия sacrud 0.0.3
. В ней поправлены некоторые баги,
добавлены нескучные обои элементы дизайна в расширении для
Pyramid
и создан отдельный репозитарий с примерами работы разных типов
полей (pyramid_sacrud_example). Pyramid_sacrud_example работает только с
Postgres потому что включает в себя примеры полей специфичных именно для этой
БД (таких как hstore
).
Запилил Yet another CRUD интерфейс для SQLAlchemy. По сути это аналог
Django админки или FormAlchemy, но ОЧЕНЬ сильно упрощенный, ничего
лишнего. Есть поддержка большинства полей + кастомные поля типа файл (для
загрузки файлов, изображений) и GUID
. Довольно просто подключить к
Pyramid проекту и сразу начать работать по адресу
http://localhost:6543/sacrud
У меня есть дополнение к pyramid которое я включаю почти в каждый проект при
помощи includeme
(include()
). Приложение
это дает мне простой CRUD
интерфейс с Jinja шаблонами малой кровью.
Что позволяет избавиться от монстра FormAlchemy. Естественно каждый
проект имеет свое название поэтому пришлось применить немного магии что бы
создать универсальный механизм получения DBSession
в своем подключаемом
дополнении.
Мне иногда приходится писать сайты знакомым, друзьям, знакомым друзей, знакомым знакомых друзей... И почти всегда всем нужен простой сайт нахаляву визитка, но что бы можно было вносить изменения периодически. Идеально для этого наверно подходит CMS, но CMS слишком тяжелая и имеет зачастую слишком много ненужного. Поэтому я написал движок сайта-визитки с выпиленным ненужным.
Redactor-js - это простой вайсвиг с возможностью загрузки изображений.
Основная документация как это делать здесь. Но как обычно есть нюансы.
Poolyx CMS - малоизвестная система управления сайтом написанная на Python с применением Pyramid немецкими кодерами.
Пример простого блога на Pyramid https://github.com/uralbash/pyramid_easy_blog
Одной из причин отказа развивать ветку Pylons стала его архитектура
проекта. Все контроллеры хранятся в директории controllers
, модели в
models
, шаблоны в templates
. Это очень удобно когда у вас маленький
проект, но если он разрастается до десятков и сотен сущностей, то становится
крайне сложно скакать по этим папкам выискивая нужный файл, относящийся именно
к этой сущности. В Django сделано по другому, в проекте хранятся
приложения (application
) - это такие маленькие подпрограммы которые
отвечают за конкретный функционал проекта (например фотогалерея
django-photologue или дерево сайта django-sitetree и прочее).
Каждое такое приложение имеет свою папку и уже в ней хранятся контроллеры
(views
в данном случае) и модели (models
). Т.е. вместо такой
архитектуры Pylons:
FormAlchemy это CRUD
для SQLAlchemy. Для Pylons
существовало расширение прямо в самом модуле в разделе ext. Для Pyramid создали
отдельный пакет pyramid_formalchemy. Посмотрим как это работает: