Netzkompetenz

Blog mit Snippets, Tipps und Tricks rund um Webprogrammierung der Taywa aus Zürich

django wagtail

Wir benutzen schon lange Django für Datenbank Projekte bei denen eher ein MVC Framework sinnvoll ist anstatt einem reinem CMS wie z.B. Typo3. Oft brauchen diese Projekte dann aber auch einen kleinen oder manchmal auch grösseren CMS Teil.

Als Kompanion CMS für solche Projekte haben wir schon einiges probiert:

  • typo3, der aufwand für eine komplett anderes System ist natürlich recht gross, zwei logins sind nötig, doppelte Template Entwicklung
  • django-cms, eins der grösseren django cms Systeme, etwas schwerfällig bei der Installation, nicht sehr flexibel, backend ist plain django mit ein paar addons
  • feincms, erste Eindruck war gut, aber backend django admin editing ist nicht gerade „state of the art“
  • plain django mit django-suit, django admin im neuem Anzug, asset Management etwas mühsam, basic CMS Funktionalität fehlt

Letztes Jahr haben wir mit  wagtail eine Lösung gefunden die überzeugt.

  • gutes backend editing
  • sehr flexibel, mit Streamfields
  • einfache Installation
  • kann einfach zusätzlich in ein Django Projekt integriert werden
  • admin interface kann AUCH für normale Django Modele genutzt werden

Gegenüber anderen CMS Systemen muss man die Content Typen selber in Django Python schreiben, d.h. installieren und sofort Content einfügen geht nicht. Der Vorteil ist das man durch das massgeschneiderte Content Model nur Felder hat die man braucht und diese auch vernünftige Namen haben. Das Editing wird dadurch einfacher und fast selbsterklärend.

Das wagtail admin interface kann auch für „normale“ django apps genutzt werden kann. Dadurch bekommt man ein System aus einem Guss für den Applikations und den CMS Teil, endlich!

So gibt es für den Benutzer keine Kontextswitch wenn er zwischen den verschiedenen Bereichen Applikation und CMS wechselt, so sollte es sein!

Wagtail ist von Haus aus natürlich für die CMS Aufgabe gewappnet und es fehlen ein paar Dinge die im normalen Django Admin zu Verfügung stehen.

Anbei ein paar Django apps für die Applikationsentwicklung mit wagtail

Foreign-Key Field

Dies must have basic ist bei wagtail nicht dabei. Mit wagtailmodelchooser kann man dies nachrüsten. Für M2M gibt es Lösungen in Wagtail aber nicht für ein FK Field.

Multiselectfield

Oft braucht man auch eine multiple Auswahl aus einen kleinem vordefinierten Subset, dann M2M einzusetzen erscheint mir etwas overkill, deswegen setzte ich auch gerne django-multiselectfield ein.

Beispiel

Hier die Benutzung von beiden Ergänzungapps.

Admin Actions

Leider gibt es keine Admin Actions im wagtail admin. Für Aktionen auf ein Objekt kann man sich behelfen mit einem Button bei jedem Element, was nur suboptimal ist.

Man muss die modeladmin Templates überschreiben und eigene template tags machen. z.B. dieses modeladmin/course/course/includes/result_row_value.html

wagtail 2.0

In der neuen 2.0 Version (aktuell 2.0rc1, sollte also nicht mehr so lange gehen) wird noch ein Manko ausgebügelt. Mit dem jetzigen Richttexteditor hallo.js habe ich leider nicht nur gute Erfahrungen gemach. Ab 2.0 setzten sie auf Draft.js, der sieht auf den ersten Blick schon etwas stabiler aus.

Autor: am
Themen: Django / Python / wagtail
Stichworte: /

TrackBack URL

Hinterlasse einen Kommentar, wir freuen uns über jedes Feedback.