Что такое Wagtail
Wagtail — система управления контентом на Django. Редакторам он даёт дерево страниц, предпросмотр, версии и отложенную публикацию. Разработчик пишет обычные модели Django, наследующие Page, и шаблоны.
| Вопрос | Ответ в Wagtail |
|---|---|
| Где URL? | путь по дереву страниц |
| Где структура? | модель и её панели |
| Где внешний вид? | шаблон страницы |
Создание проекта
pip install wagtail
wagtail start mysite
cd mysite
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverwagtail start создаёт проект с приложениями home и search. Админка Wagtail находится по адресу /admin/.
💡 Wagtail — обычный проект Django:
settings.py,urls.py, миграции и ORM работают так, как вы привыкли.
Модели страниц и дерево
# blog/models.py
from django.db import models
from wagtail.admin.panels import FieldPanel
from wagtail.fields import RichTextField
from wagtail.models import Page
class BlogPage(Page):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
body = RichTextField(blank=True)
content_panels = Page.content_panels + [
FieldPanel("date"),
FieldPanel("intro"),
FieldPanel("body"),
]content_panels задаёт форму редактора. Где может находиться страница, ограничивают parent_page_types и subpage_types:
# blog/models.py
from wagtail.models import Page
class BlogIndexPage(Page):
subpage_types = ["blog.BlogPage"]