Wagtail — лучшая CMS на python в нашей галактике

Kate

Administrator
Команда форума
Wagtail - это популярная CMS на основе Django. Django предоставляет огромные возможности - с его помощью созданы не только сайты, но и, например, популярный веб-сервис комментариев disqus, веб-сервис хранения git репозиториев bitbucket и многое другое. На django можно создать все что угодно.

Wagtail предоставляет пользователям новые, построенные с помощью Django, абстракции. Можно провести следующую аналогию: если django предоставляет вам молоток, пилу, гвозди и деревянные доски, то Wagtail сразу дает готовые столы, стулья и прочую мебель сколоченную из того, что есть в django. Для своего проекта вы конечно можете собрать необходимую мебель сами, используя только django, но во многих случаях будет гораздо проще и быстрее взять что-то готовое из Wagtail.

Из комментариев в интернет кажется, что многие считают Wagtail надстройкой к админке django, но это далеко не так. В этой статье я расскажу о Wagtail, которую считаю лучшей CMS и приведу некоторые абстракции, предоставляемые Wagtail.

Кто стоит за Wagtail​

История Wagtail начинается с 2014 года, когда британская компания Torchbox разработала сайт для Королевского колледжа искусств. Если пройти на сайт с установленным расширением Wappalyzer, можно убедиться, что заведение по сей день использует Wagtail. Изначально планировалось, что Wagtail станет open source проектом, каким он и остается по сей день. Torchbox ведет разработку своей CMS по настоящее время и предлагает платные услуги по поддержанию и созданию сайтов на Wagtail.

Скрин Wappalyzer с сайта Королевского колледжа искусств
Скрин Wappalyzer с сайта Королевского колледжа искусств
Сейчас Wagtail используют такие организации как Mozilla Foundation, Nasa, Британский минздрав, Калтех, google в официальном туториале для своей облачной платформы устанавливает Wagtail на App Engine и многие другие. Если пройти по ссылкам из предыдущего предложения, опять же можно проверить Wappalyzer или любым другим инструментом, что сайты действительно используют Wagtail CMS.

На момент написания статьи, гитхаб репозиторий Wagtail имеет чуть больше 11 тысяч звезд и в разработке успело поучаствовать 496 человек, репозиторий очень активный. Для сравнения репозиторий Django CMS - еще одной CMS написанной с использованием Django имеет почти 8.5 тыс звезд и 440 участников а репозиторий Wordpress имеет 15.5 тыс звезд и 63 участника. Команда Wagtail регулярно выпускает новые версии по заданному расписанию, например следующая версия 2.15 ожидается 1 ноября 2021.

Основные идеи Wagtail​

Разработчик подошли к созданию Wagtail с некоторыми ключевыми идеями в голове, которые они назвали "Дзен Wagtail" по аналогии с "Дзен Питона". Вот мой пересказ Дзена Wagtail:

  1. Во-первых на Wagtail нельзя создать сайт без программирования. Если вам нужно что-то простое и быстро, лучше не тратить время на Wagtail - не забивайте гвозди микроскопом, установите готовую CMS и настройте ее мышкой. Wagtail актуален для создания проектов, которые могут иметь много абстракций, сложные зависимости между ними, несколько пользователей с различными ролями и т.п.
  2. Создание и поддержание сайта это общая работа нескольких людей. В Wagtail удобно и необходимо разделять обязанности разработчика, дизайнера, администратора сайта и автора, подготавливающего материалы на сайт.
  3. Авторы материалов для сайта должны иметь удобный и быстрый способ добавлять свои идеи/мысли/новости на сайт. Авторы не должны писать код на css или html. Дизайн и контент должен быть отдельно.
  4. Лучшим инструментом для разработчика сайта является язык программирования. Wagtail предполагает, что разработчик сам напишет какие-то нужные для сайта дополнения.

Некоторые возможности Wagtail​

Страницы

Одной из важных абстракций, предоставляемых Wagtail является страница - Page. Страница предоставляет кучу полезного функционала из коробки - черновик, можно сохранять все версии страницы в базе данных (по мере их редактирования), дата публикации, дата изменения и много другое. Можно создать сколько угодно отдельных типов страниц, наследуя от Page. Например, отдельные классы для страниц блога, новостей, сотрудников и т.п. В каждом из таких типов можно задать, какой контент должен быть на странице - например, просто текст, изображения, видео... или все вместе.

Страницы организованы в виде графа - каждая страница может быть дочерней или родительской к другой странице, что можно указать в коде. Например, можно сделать страницу "Люди" /people/, в которой будет написано какой классный коллектив работает в компании. Дочерними страницами для страницы "Люди" можно сделать индивидуальные страницы сотрудников например /people/ceo, /people/cto... Все это делается в Wagtail в пару строк кода.

Управлять содержимым страниц можно только из админ панели wagtail.

Пример редактирования страницы Wagtail
Пример редактирования страницы Wagtail
StreamField

Еще одним важным инструментом является StreamField. StreamField позволяет создать контент из блоков - также как, например, пишутся статьи на хабре, vc, vk - короче это уже стало стандартом. Ваша страница это просто набор блоков - блок изображение с подписью, блок текст, блок видео... В Wagtail можно создать собственные виды блоков. Например, можно создать блок для карусели картинок, как в vk.

Картинки

Wagtail дает возможность обрезать картинки как угодно, в интерфейсе можно указать фокусную точку на картинке и Wagtail будет стремиться показать ее на страницах с изображением. В документации есть также инструкция как настроить Wagtail на распознавание отдельных элементов на картинках (например лиц, кошечек, машинок и т.п.) и в дальнейшем обрезать картинки, чтобы распознанная часть попадала куда нужно.

API

Нужна безголовая (Headless) CMS? Нет проблем! REST API в Wagtail доступно практически по умолчанию (пара строк кода, скопированных из документации). Если нужно что-то круче - graphql - есть пост от Torchbox с кодом и инструкциями какие пакеты нужно установить.

Другие возможности

Админ интерфейс Wagtail легко настраивается - можно добавить новые элементы меню, поменять логотип, поменять цвета. Админ интерфейс адаптивный - нормально выглядит на смартфоне, компьютере, планшете и т.п. Еще в Wagtail легко создавать сложные таблицы, из коробки доступен ставший стандартом elasticsearch, есть разделение доступа между пользователями а также группами пользователей и многое другое.

Освоить Wagtail​

Предположу, что написанное выше звучит очень абстрактно и чтобы разобраться нужно посмотреть примеры и пописать код.

У Wagtail отличная документация, хотя на ответах со stackoverflow я не раз сталкивался с примерами недокументированных возможностей. Кстати на stackoverflow у Wagtail отличная поддержка. На один мой вопрос даже ответил сотрудник Torchbox Matt Westcott - один из ключевых разработчиков Wagtail.

Отличные уроки по Wagtail на английском подготовил Kalob Taulien:

Доступных материалов на русском, к сожалению, не так много. Все, что я смог найти это:

На хабре есть один старенький туториал из трех частей по запуску CMS (раз, два, три). Возможно, что-то оттуда уже устарело, но, попробовать запустить можно.

Туториал https://python-scripts.com/wagtail - надеюсь, автор написал тот пост не ради рефералки на хостинг.

Пользуясь случаем, не могу не прорекламировать блестящие уроки на youtube, отснятые моей скромной персоной:

Заключение​

Видя какой путь прошел Wagtail, и как он развивается сейчас, уверен, что данная CMS будет только процветать, ведь ее поддерживают настоящие профи, которые зарабатывают деньги, делая Wagtail лучше, ей пользуются самые передовые организации и IT гиганты, в ней есть крутые возможности из коробки.

 
Сверху