CMSstash

Wagtail: Der Django-Newcomer

Autor: Sebastian Schürmanns

Wagtail gehört neben Django CMS zu den populärsten Content Management Systemen aus der Python-Welt. Genauso wie Django CMS basiert auch Wagtail auf dem Django Framework, allerdings ist Wagtail erst 2014 gestartet und zählt damit zu den Newcomern. Wagtail ist Open Source und gilt als besonders flexibel. Auch Static Site Ansätze und Headless-Architekturen sind mit Wagtail möglich.

Wagtail, ein modernes Django-CMS

Wagtail wird von Torchbox entwickelt und betreut, einer jungen Digital-Agentur aus Bristol bzw. Oxford. Passend zur Spezialisierung auf Charity- und Non-Profit-Projekte ist Torchbox zunächst als Drupal-Agentur gestartet, bevor 2014 Wagtail erschienen ist. Nach seiner Veröffentlichung wurde Wagtail mit einer aktiven Community schnell zu einem der beliebtesten Python-CMS auf GitHub. Genutzt wird Wagtail von zahlreichen großen Organisationen und Unternehmen wie Google, NASA, mehrere Universitäten und diverse Behörden.

Wagtail für Autoren

Wagtail hat ein auffällig farbenfrohes und modernes User-Interface. Anders als viele andere Newcomer setzt Wagtail nicht auf ein Inpage-Editing, sondern auf eine klassische Administrationsoberfläche mit den üblichen Eingabefeldern für Inhalte. Initial ist allerdings nur ein Eingabefeld für einen Titel konfiguriert, alle anderen Eingabe-Felder werden von einem Entwickler gesondert erstellt und individuell an die Bedürfnisse des Website-Konzepts angepasst. Anders als bei anderen modernen CMS gibt es dazu allerdings keinen eingebauten Formular-Manager, sondern der Entwickler fügt vordefinierte Felder mit Python-Code hinzu.

Autorenoberfläche von Wagtail

Das zentrale Eingabefeld für die Content-Erstellung ist der Rich Text Editor, wobei Wagtail keinen Standard-Editor nutzt, sondern mit "Draftail" eigene Wege geht. Draftail ist ein Rich Text Editor für Markdown. Er bietet allerdings einen kompletten WYSIWYG-Modus mit einer zusätzlichen Format-Leiste an, mit der die Inhalte auch ohne Kenntnisse der Markdown-Syntax problemlos formatiert werden können. Auch die Integration von Bildern funktioniert einwandfrei und selbsterklärend. Mit Draftail gehört Wagtail zu den wenigen Content Management Systemen, denen eine absolut Mainstream-tauglichen Markdown-Lösung gelungen ist. Wer den Editor als Stand-Alone-Anwendung ausprobieren will, findet im Web eine Draftail-Demo.

Job-Angebote für CMS-Experten

CMS-Experten wie Web-Entwickler, Produkt-Owner oder Projekt-Manager sind heiß begehrt. Daher bietet CMSstash in Zukunft ein Job-Board an. Job-Board ansehen

Erfreulich für Autoren ist außerdem die zentrale Button-Leiste zur Speicherung der Inhalte, die am unteren Bildschirmrand fest verankert ist und dadurch jederzeit erreichbar bleibt. Ein Editorial Workflow mit "Draft", "Publish" und "Submit for Moderation" ist ebenfalls per Default bereits vorhanden. Wagtail zeigt damit einmal mehr, dass man mit klassischen Formular-basierten Eingaben eine ebenso gute und vielleicht sogar eine bessere Author-Experience schaffen kann, wie mit moderen Inpage-Editing-Strategien.

Alternativ zu dem Rich-Text-Editor gibt es mit "StreamField" noch die Möglichkeit, eine Seite sehr frei über Content-Blöcke zu erstellen, sodass der Autor nicht an eine vorgegebene Formular-Struktur gebunden ist. Einen guten Eindruck vermittelt dieses kurze Demo-Video über StreamField.

Einzig das Design bleibt Geschmackssache: Durch den vielen Whitespace und die Anordnung der Elemente wirkt der Page-Editor auf kleineren Bildschirmen etwas gedrungen und die knallige Farbgebung lenkt etwas vom eigentlichen Content ab. Auch die Navigation hin zu den Inhaltsseiten ist (wie bei den meisten Content-Management-Systemen) etwas umständlich. Ansonsten folgt Wagtail jedoch sehr erfolgreich dem Prinzip der Reduktion und Fokussierung auf das Wesentliche, sodass Wagtail für Autoren jeder Erfahrungsstufe eine gute Wahl ist.

Wagtail für Entwickler

Genauso wie Django CMS basiert auch Wagtail auf dem Python-Framework Django. Für Entwickler ist der Einstieg in beide Content Management Systeme vergleichsweise einfach, wobei Wagtail in Sachen Dokumentation und einfachem Code zumindest aus Sicht seiner Anhänger noch eine Nase vorne liegt. Bei der Auswahl dürfte jedoch entscheidender sein, dass sich Wagtail leichter in bestehende Django-Projekte integrieren lässt. Das liegt unter anderem an der Administrations-Seite vom Django-Framework, die vom Django-CMS überschrieben wird, während sie bei Wagtail unberührt bleibt und damit zusätzlich zur Wagtail-Admin-Seite genutzt werden kann.

Die Installation von Wagtail ist mit ein paar Befehlen über die Konsole erledigt:

$ pip install wagtail       // wagtail installieren
$ wagtail start mysite      // neue Seite installisieren
$ cd mysite                 // in den Projektordner wechseln
$ python manage.py migrate  // Datenbank anlegen
$ python manage.py createsuperuser  // User anlegen

Nachdem man den Server gestartet hat, ist die Seite unter http://127.0.0.1:8000 erreichbar:

python manage.py runserver

Wagtail startet ohne Theme und auch ohne vorkonfigurierte Eingabefelder. Anders als viele moderne Content-Management-Systeme aus der PHP-Welt bietet Wagtail zumindest per Default auch keinen Field-Manager in der Administrations-Oberfläche an, sondern die Felder müssen mit Python-Code hinzugefügt werden. Der Code dafür ist allerdings denkbar einfach. Für einen Rich-Text-Editor muss das Page-Model unter /home/models.py lediglich um wenige Zeilen Code erweitert werden:

from django.db import models

from wagtail.core.models import Page
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel


class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

Nebenbei: Der bereits angesprochene Rich-Text-Editor heißt Draftail und ist eine Eigenentwicklung von Wagtail auf Basis des Editor-Frameworks Draft.js. Der Editor steht separat auf GitHub zur Verfügung und kann somit auch in anderen Projekten genutzt werden.

Die Migration des neuen Feldes in das CMS bzw. in die Datenbank erfolgt über zwei kurze Befehle:

python manage.py makemigrations
python manage.py migrate

Die Inhalte können anschließend in einem Template ausgegeben werden. Ähnlich wie Django-CMS nutzt auch Wagtail die Django Template Language (DTL) und erweitert sie um eigene Tags (wagtailcore-tags). DTL ähnelt sehr stark der Syntax von Twig und anderen Template-Sprachen aus der PHP-Welt. Für Entwickler mit Erfahrungen in Template-Sprachen dürfte die Einarbeitung daher problemlos sein. Ein typisches Template für die Ausgabe einer Artikel-Liste sieht so aus:

{% extends "base.html" %}

{% load wagtailcore_tags %}

{% block body_class %}template-blogindexpage{% endblock %}

{% block content %}
    <h1>{{ page.title }}</h1>

    <div class="intro">{{ page.intro|richtext }}</div>

    {% for post in page.get_children %}
        <h2><a href="{% pageurl post %}">{{ post.title }}</a></h2>
        {{ post.specific.intro }}
        {{ post.specific.body|richtext }}
    {% endfor %}

{% endblock %}

Die sehr gute Dokumentation von Wagtail dürfte den Einstieg für Entwickler zusätzlich erleichtern. Für einen ersten Überblick eignet sich auch die kurze Einführung Getting Started With Wagtail im Wagtail-Blog.

Wagtail für Nicht-Entwickler

Bei der Installation von Wagtail werden keine Themes vorinstalliert und auch keine Eingabefelder für Inhalte vorkonfiguriert. Als Nicht-Entwickler hat man daher keine Chance, eine Seite mit Wagtail zum Laufen zu bringen. Für Code-Neuling dürfte sich Wagtail aufgrund des modernen und schlanken Codes gut als Einstieg eignen.

Kosten

Wagtail ist komplett Open Source und steht unter BSD-Lizenz. Da es keine Themes gibt und die Einrichtung von Wagtail nicht ohne Entwickler-Kenntnisse möglich ist, fallen für ein Wagtail-Projekt natürlich Entwickler-Kosten an. Torchbox selbst bietet einen kommerziellen Service für Wagtail an. Aufgrund der Beliebtheit des Systems dürfte es jedoch auch kein Problem sein, andere Dienstleister oder Freelancer zu finden.

Einsatzfelder für Wagtail

Aufgrund seiner hohen Flexibilität kann Wagtail sowohl für große Enterprise-Webseiten, als auch für mittelgroße und kleinere Web-Projekte genutzt werden. Die bereits erwähnte Integrationsmöglichkeit in bestehende Django-Projekte eröffnet weitere Einsatzszenarien. Unter den aktuellen Nutzern findet man große Namen wie die NASA, Google, Oxfam, Mozilla, MIT, das Rote Kreuz, Salesforce, NBC, BMW und mehrere Regierungen. Wagtail unterstützt unter anderem auch eine Generierung statischer Webseiten und durch seine Content-API sind auch moderne Headless-Architekturen möglich.

Auch andere Experten lesen gerne gute Inhalte und freuen sich, wenn Du diesen Artikel zum Beispiel über Twitter teilst. Auf Twitter gibt es außerdem von @CMSstash tägliche Updates.

Zuletzt aktualisert: 12.07.2018