Wenn man sich das aktuelle Webgeschehen einmal im Bezug auf Webprogrammierung anschaut, wird schnell klar, dass die Meisten (nicht Professionellen) davon ausgehen, dass Webseiten grundsätzlich in HTML und CSS geschrieben und, wenn nötig, in PHP programmiert werden. Dabei wird jedoch auch meistens angenommen, dass PHP ledig dazu gut ist, um innerhalb des HTML‘s kleine Befehle einzubauen.

Kauft man sich heute einen Webserver aus einer beliebigen Werbe-Beilage, bekommt man meistens eine billige de-Domain mit ein paar MB (oder auch GB, kommt drauf an, wie viel Werbung der Anbieter gerade machen muss) Speicherplatz inkl. FTP Zugang auf einem Server, der einem dazu noch gnädiger Weise das Ausführen von bestimmten PHP-Skripten und Zugang zu einer MySQL-Datenbank gestattet. Die meisten Menschen sehen das als die ultimative und professionelle Weise an, Webseiten zu erstellen.

Aber auf die gerade beschriebene Weise kann man meiner Meinung nach keine wirklich vernünftigen Webseiten entwickeln, allein, weil man theoretisch jede Seite einzeln bearbeiten muss. Um eine Webseite aber wirklich “vernünftig” zu machen, braucht man einen ganzen Haufen an Dynamik und guten Tools.

Warum Python?

Als ich letztes Jahr um diese Zeit angefangen habe, für meine Webseiten ein eigenes System zu entwickeln, war mir schnell klar, dass ich kein PHP dazu verwenden werde. Nicht, dass ich etwas speziell gegen PHP hätte, aber andere Systeme wie Ruby mit Rails oder Python mit Django sind meiner Meinung nach weitaus überlegen.

Ich habe mich relativ schnell für Python und Django entschieden, da mir die Idee dahinter ziemlich gut gefällt und ich mich ziemlich gut mit dessen Prinzipien anfreunden kann.

Python an sich ist ziemlich einfach gestrickt, und eben das macht es für mich so genial. Man hat viele kleine Module, nach denen Python in bestimmten Verzeichnissen sucht und die man unter bestimmten Namen einbinden kann, und erhält damit Stück für Stück einen riesigen Haufen an Funktionalität. Zudem ist Python von Anfang an als Objekt-Orientierte Sprache gedacht und hat einen wunderschönen Syntax, der den Quellcode sehr gut lesbar macht. Es macht einfach Spaß, Python-Code zu schreiben!

Warum Django?

Django ist rückblickend betrachtet so ziemlich das Beste, mit dem ich je Webseiten entwickelt habe. Es bietet mir immer wieder absolut alles, was ich brauche, um Webseiten schnell, individuell und funktionell zu machen.

Zunächst einmal ist Django ein Framework, d.h. man erstellt ein neues Projekt mit einem kleinen Skript und hat sofort ein laufendes System. Django kümmert sich für einen um komplexe Sachen wie die komplette Datenbankverwaltung, schöne und einfache URL-Konfiguration aber auch um wirklich nützliche und coole Sachen wie ein automatisches und voll funktionsfähiges Admin-Panel mit Benutzerverwaltung (kein Gerüst, ein ganzes Haus!) und stellt Sachen wie Generic Views für typische Probleme (wie: die letzten 15 Einträge eines Models anzeigen) bereit.

Wer mit Django Webseiten erstellen will, kommt zudem in den Genuss von purem MVC, bzw. MVT, wie es bei Django heißt1. Das finde ich ziemlich wichtig, da die erzwungen strikte Trennung von dem Datenmodell, dem Auslesen der Daten und dem Anzeigen der Daten meiner Meinung nach der ganze Sache ein ungeheures Maß von zusätzlicher Übersichtlichkeit verleiht, und Übersichtlichkeit bei größeren Projekten das A und O ist. Außerdem sortier Django alle Einzelteile einer Webseite (Blog, Tagging-System, aber auch das Admin Panel, Flatpages, usw.) in sog. Applikationen, das sind einfache Python Module/Verzeichnisse, die alle Dateien bzw. Module der Applikation enthalten, wobei das Template natürlich nicht in die Applikation muss (aber auch kann).

Eine weitere schöne Sache in Django ist das Template-System. Es basiert auf einem ziemlich einfachem Syntax, der es auch Nicht-Programmiern erlaubt, schnell und einfach Templates für Django-Seiten zu entwickeln2. Im Template-System hat man (eigentlich) keinerlei Zugriff auf direkten Python-Code, sondern kann nur das aufgreifen, was einem der View so alles bietet.

Vor allem ist man mit Django auch nicht auf einer Einbahnstraße, denn falls einem ein Django-Modul nicht gefällt, kann man es meistens problemlos rausschmeißen und sein eigenes anderes Modul dafür benutzen! Django bietet einem also nur eine Hilfestellung, auf die man verzichten kann — aber meistens will man sie dann noch nicht missen.

Fazit

Alles in Allem kann ich nur sagen, dass ich immer wieder fasziniert davon bin, mit welcher Qualität und Geschwindigkeit man mit Django Webseiten erstellen kann. Es gibt zwar wie bei jedem Framework eine gewisse Lernkurve, jedoch fällt diese vor allem zu Beginn sehr steil aus und dank der wirklich guten Dokumentation kann man auch sehr schnell Auskunft über Funktionen und Django-interne Frameworks3 bekommen, um bisher noch unbekannte Funktionen von Django direkt einsetzen zu können.

1 Django nennt die Elemente “Model”, “View” und “Template”, weil der “Controller” bzw. “View” bestimmt, welche Daten angezeigt werden und das “Template” (der eigentliche “View”) bestimmt, wie die Daten angezeigt werden. Mehr dazu in der Django FAQ.

2 Das Template von FLabs ist z.B. nur in ganz kleinen Teilen von mir, und zum größten Teil von Dennis und Nick, die beide kaum Python können.

3 Django-intern existieren noch mal weiter Frameworks um einige Aufgaben noch weiter zu erleichtern, z.B. für Feeds, einfache Seiten (Flatpage), Redirects, usw.