Wagtail CMS: Einführung und erste Schritte
Wagtail ist das Django-CMS das ich für Content-intensive Projekte fast immer empfehle. Es kombiniert die volle Power von Django mit einem redakteursfreundlichen Admin und flexiblen Page-Modellen. Eingesetzt u.a. von Google, NASA und Mozilla.
Was ist Wagtail?
Wagtail ist ein Open-Source CMS auf Basis von Django. Content wird in Pages organisiert, die eine Baumstruktur bilden. Jeder Page-Typ ist ein Django-Model — du hast die volle Kontrolle über Datenstruktur und Darstellung.
Installation
pip install wagtail
# Neues Projekt erstellen
wagtail start mysite
cd mysite
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverWagtail bringt einen eigenen Admin unter /cms/ mit. Der Django-Admin unter /admin/ bleibt weiterhin verfügbar.
Das Page Model
from django.db import models
from wagtail.models import Page
from wagtail.fields import RichTextField
from wagtail.admin.panels import FieldPanel
class BlogPage(Page):
intro = models.TextField(blank=True)
body = RichTextField(blank=True)
date = models.DateField("Veroeffentlichungsdatum")
content_panels = Page.content_panels + [
FieldPanel("intro"),
FieldPanel("body"),
FieldPanel("date"),
]
parent_page_types = ["BlogIndexPage"]
subpage_types = [] # Keine Unterseiten erlaubtStreamField — flexibler Content
StreamField ist Wagtails mächtigstes Feature: Es erlaubt Redakteuren, Content aus verschiedenen Block-Typen frei zusammenzustellen:
from wagtail.fields import StreamField
from wagtail.blocks import CharBlock, RichTextBlock, ImageChooserBlock, StructBlock
class ArticlePage(Page):
body = StreamField([
("heading", CharBlock()),
("paragraph", RichTextBlock()),
("image", ImageChooserBlock()),
("quote", StructBlock([
("text", CharBlock()),
("attribution", CharBlock(required=False)),
])),
], use_json_field=True)
content_panels = Page.content_panels + [
FieldPanel("body"),
]Im Template iterierst du einfach über die Blöcke: {% for block in page.body %}{% include_block block %}{% endfor %}
Der Wagtail-Admin
- Page Explorer: Baumansicht aller Seiten, Drag & Drop
- Snippets: Wiederverwendbare Content-Bausteine
- Images: Integrierte Medienverwaltung mit automatischem Zuschneiden
- Workflows: Redaktionsprozesse mit Freigabe-Stufen
- Revisionen: Jede Änderung versioniert, Rollback jederzeit möglich
Wann Wagtail, wann nicht?
Ideal wenn Redakteure ohne Programmierkenntnisse Content pflegen müssen, die Struktur flexibel und hierarchisch ist, und du Django bereits kennst.
Weniger geeignet für reine APIs ohne Admin — dort ist DRF die bessere Wahl.
