Django Web Framework

Django und die Migration vorhandener CMS

Haben Sie das richtige Content Management System gewählt ? Diese Frage stellt sich leider oft nachdem schon sehr viele Einträge im System verwaltet werden und man die Eigenheiten lieben oder hassen gelernt hat. Ab diesem Zeitpunkt erscheint es so, als gebe es keinen Weg mehr zu einem anderen System. Welche Möglichkeiten bestehen denn, wenn das System prall gefüllt ist und an seine Grenzen gerät ? Dieser Artikel setzt sich mit der grundsätzlichen Problematik der Migration von und zu verschiedenen CMS auseinander und zeigt das Python basierte Web Framework Django auf, welches für diesen Zweck durchaus geeignet erscheint.

Die Probleme beginnen erst bei wirklich vielen Seiten

Wenn dutzende Autoren jeweils dutzende Seiten erstellen und somit mehrere Hundert oder Tausend Seiten existieren, die Ihrer Meinung nach vielleicht gern auf ein anderes Content Management System migriert werden sollen, wird es richtig kompliziert. Denn das ist kein leichtess Unterfangen. Es müssen nämlich einige Punkte dabei betrachtet werden.

Das URL-Schema

Ein anderes CMS erzeugt in der Regel andere URLs für ein und die gleiche Seite. Was machen nun die Suchmaschinen damit ? Wird man abgestraft oder womöglich belohnt für diesen Akt der Adressänderung?

Verschiedene Datenbanken

Wie bekommt man nun die Seiten z.B. aus Joomla`s Content-Tabelle, die aus einer relationalen Datenbank kommt, in die objektorientierte Datenbank von Plone hinein ? Und was passiert mit den Medien wie Videos und Bilder ? Ja ja, da wird es richtig kompliziert…

Änderung des Frameworks oder der Programmiersprache

Bleiben wir beim Beispiel Joomla zu Plone. Joomla wurde mit der Programmiersprache/Scriptsprache PHP entwickelt. Plone hingegen mit Python. Da ist nichts wirklich kompatibel. Selbst entwickelte Module, Komponenten u.ä. werden nicht in Plone funktionieren.

Passen Webseiten eigentlich in einen Reiswolf

Ich erinnere mich an einen großen deutschen Automobilhersteller, der für sein Intranet gern auf ein Content Management System setzen wollte. Alle Fachabteilungen mussten nun selbst zusehen, wie der Content der jeweiligen Abteilung, der Teils aus statischen und teils aus dynamischen Webseiten bestand, irgendwie in das neue Content Management System einpflegen. Da manche Fachabteilung aber so viele Seiten zusteuern musste, dass es eigentlich für sich schon ein CMS hätte verwenden können, musste erst einmal gefiltert werden. So landeten dann etliche Seiten im virtuellen Reiswolf. Denn selbst eine schlecht bezahlte Aushilfe wäre damit sehr lange am Werk gewesen. Dieser Akt ist schon höchst fraglich…

Wollen wir aufgeben ?

In Anbetracht der Komplexität jedes einzelnen Systems, muss man sich vorher im Klaren sein, was man zu tun gedenkt. Mit dieser Webseite bin ich mittlerweile auch an einem Punkt angekommen, wo ich gern etwas mehr Flexibilität hätte. Insbesondere in der Auswahl des Datenbank Backends und der Programmiersprache sind da meinerseits eine Menge Wünsche, die aber leider wohl nie umgesetzt werden. Die engen Grenzen Joomla`s erlauben nun leider nur, Dinge in PHP umzusetzen und seine Inhalte in MySQL zu speichern. Wenn man aber mittlerweile eine andere Programmiersprache Python liebt, wäre man froh, hier irgendwie wegzukommen.

Django – Das Web Framework für Perfektionisten…

Nehmen wir einmal an, ich bin richtig zufrieden. Ich habe eine Webseite, dessen Content Management System ich selbst mit Python in 3 Tagen entwickelt habe und als Datenbank Backend kann ich zwischen MySQL, PostgreSQL, Oracle, SQLite und DB2 wählen. Zudem verfüge ich über die Möglichkeiten, verschiedene Caching Mechanismen zu verwenden. Und die Architektur meines Systems ist von Haus aus so ausgelegt, dass ich beim rapiden Anstieg der Besucherzahlen einfach das System auf verschiedene Server skalieren kann. Wenn ich will, kann ich mit Leichtigkeit jede Komponente auf einen eigenen Server verteilen und sogar einen LoadBalancer einsetzen. Den Webserver habe ich fast vergessen. Natürlich will ich nicht nur Apache oder IIS verwenden können. Da will ich natürlich auch etwas Flexibilität haben.

Ok, warum mit Kanonen auf Spatzen schießen will man meinen. Das tue ich auch nicht, denn Django kommt als Python Bibliothek daher und bringt mir die Möglichkeit, klein anzufangen und bei Bedarf beliebig skalieren zu können. In der Praxis sieht es ungefähr so aus, dass ein Apache als Webserver und Python zusammen mit Django und ein paar Zusatzmodulen genügt, um ein richtiges Projekt mit einigen hundert Seiten aufzusetzen. Sprich: WordPress oder Joomla in einigen Tagen nachzubauen. Klingt nicht schlecht oder ?

Django tritt als ernsthafte Konkurrenz zu Ruby on Rails und Co. an. Es ist von Grund auf so entworfen, dass der Webentwickler keine wiederholende Dinge entwickeln muss. Keine Routine-Aufgaben mehr. Erst denken dann coden! Die Django Community nennt das auch das DRY-Prinzip (Don`t repead yourself). Das führt dann zwar zu einer recht steil verlaufenden Lernkurve, die aber danach durch extrem schnell entwickelte Projekte mit sehr wenig selbst geschriebenen Code honoriert wird. Das beliebte Django Blog-Beispiel eben. Zuhauf im Internet zu finden.

Wo waren wir stehengeblieben ? Joomla zu Django !

Kommen wir wieder zum Thema. Wenn also eine Migration eines Content Management Systems ansteht, sollte man Django unbedingt ins Auge fassen. Denn wie sagte Michael Schumacher: „Vorne ist immer Platz!“. Denn dieses Motto passt gut auf die Skalierbarkeit von Django.

Da Django so vielseitig ist, lässt es sich aber auch gut mit anderen Systemen kombinieren. Warum nicht ein neues Frontend mit Django entwickeln und nur noch den Content aus Joomla`s MySQL Datenbank nutzen ? Gleiches sollte mit Typo, WordPress und Co. funktionieren. Denn Django kann wunderbar per Datenbank Introspektion vorhandene Datenbanken als Modell abbilden und bietet so die Möglichkeit eigene Front- und Backends zu entwerfen.

Nicht zu vernachlässigen ist die immer mitgelieferte Administrationsoberfläche für eigene Django Projekte. Hat man z.B. das Modell von WordPress in Django abgebildet (schafft man nach Einarbeitung in weniger als 1 Stunde), kann die Datenbank schon mit Content gefüttert werden, weil die Admin-Oberfläche automatisch für jedes Projekt generiert wird. Bleibt nur noch ein Template/Frontend zu designen. Wenn man dafür einen Webdesigner zur Verfügung hat, kann man den Usern schon den Administrationszugang an die Hand geben und die Inhalte erstellen lassen – noch bevor die Webseite fertig designt ist. Denn der Webdesigner liebt nichts mehr als echte nutzbare Daten für die Seite…

Links zum Artikel:

Weiterführende Angebote:

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.