Kategorien
Webdesign

Rapid Web-Development mit Django, Teil 1

Frameworks für die Webentwicklung sind zahlreicher als Bäume im Wald. Dabei gibt es große Unterschiede in Qualität und Leistungsumfang. Django, das Framework, um das heute gehen soll, ist vor allem für Entwickler mit engen Zeitplänen gedacht, die sich trotzdem auf die Stabilität und Sicherheit der Anwendungen verlassen müssen, um sich auf die Funktionalität konzentrieren zu können. Da Django ein wirklich großartiges Framework ist, haben wir ihm eine kleine Tutorial-Serie gewidmet, deren ersten Teil Sie in diesem Moment lesen. Heute wollen wir theoretische Grundlagen und das konzeptionelle Hintergrundwissen vermitteln.

Anzeige

Djangos Anfänge

Das Python-Framework Django wurde ursprünglich zur Verwaltung der Nachrichten-Seite Lawrence Journal-World (LJ World) entwickelt und 2005 unter die BSD-Lizenz gestellt. Seitdem hat Django eine stetig gute Entwicklung genommen und ist zu einem professionellen Framework für Webservices verschiedenster Art geworden. Django wird ständig um weitere nützliche und spannende Features erweitert, mittlerweile ist die Version 1.4 aktuell.

Django ist für viele Zwecke einsetzbar

Vor allem eignet sich Django in Szenarien, in denen in großem Umfang mit Datenobjekten gearbeitet wird. Da dies mittlerweile fast überall der Fall ist, bietet es sich an, Django stets mit in den Pool in Frage kommender Frameworks zu nehmen, wenn eine entsprechende Entscheidung zu treffen ist. Schaut man auf die Entwicklungsgeschichte, so fällt auf, dass Django oft von Newsportalen eingesetzt wird. Es darauf zu reduzieren, würde Django aber absolut nicht gerecht, denn mit Hilfe dieses Frameworks ist bei guter Planung eine schnelle und vor allem stabile Entwicklung von Webservices jedweder Art möglich.

Django und seine Vor- und Nachteile

Mittlerweile bieten viele Web-Frameworks (z.B. Symfony) einen Object-Relational-Mapper (ORM) an. Dies bietet dem Entwickler einen erheblichen Komfort und Sicherheit über seine Datenstrukturen. Denn dank des ORM muss nur direkt in Django ein Modell mit den expliziten Angaben über Datentypen und Foreign-Keys entworfen werden. Anschließend erstellt Django automatisch die Datenbank. Dank des ORM kann man nun sehr einfach auf die Daten zugreifen, insbesondere auch auf Daten, die über einen Foreign-Key von einem Objekt auf das andere verbunden sind.

In Django müssen Urls jedoch explizit aktiviert werden. Das hat für manche den Nachteil, dass sie jedes Mal eine Url beschreiben müssen, um einen View aufzurufen. Doch nur so ist auch gewährleistet, dass Funktionalitäten der Anwendung in der eigenen Hand bleiben.

Anzeige

Als Django-Entwickler kann man sich auf die Unterstützung einer überaus kompetenten und großen Community verlassen.

Djangos Vorteile können aber auch schnell zum Nachteil werden. Selbst bei noch so guter Planung kann es im Nachhinein passieren, dass zu einem Modell noch weitere Daten dazu kommen sollen. Das ist bei Django nicht ganz so einfach, denn mit der Migration von Daten gibt es Schwierigkeiten. So erkennt das Framework zwar den neuen Datensatz, erstellt diesen aber nicht in der Datenbank. Hier ist derzeit noch händische Nacharbeit erforderlich, wenn man nicht eines der guten verfügbaren Module für diesen Einsatzzweck verwenden möchte.

Desweiteren wird für viele Umsteiger von PHP das Deployment eventuell noch zu einem Problem. Hier handelt es sich jedoch um eine kleinere Umstiegsschwierigkeit, die mit etwas Übung leicht zu beseitigen ist und die wir in einem der nächsten Teile zudem beschreiben werden.

Django MVT-Entwurfsmuster
Django MVT-Entwurfsmuster

Ein umfangreiches Werkzeug

Django basiert auf einem, dem MVC ähnlichen Entwurfsmuster: MVT – Model-View-Template. Im Modell wird die Datenbankstruktur jeder einzelnen App festgelegt. Jede Anwendung besteht wiederum oft aus mehreren logisch getrennten Apps, die in anderen Projekten wiederverwendet werden können. Im View wird die Logik des Ganzen festgelegt, also Daten vorbereitet zur Ausgabe und im Template wird die spätere Ausgabe festgelegt. Dafür bietet Django eine umfangreiche Template-Sprache, die sich zudem leicht erweitern lässt.

Desweiteren bietet Django in seiner Grundkonfiguration vielfältige Möglichkeiten zur Lokalisierung und zum Caching. Außerdem beherbergt es viele Features, etwa automatisch aus den Modellen generierte Formulare. Wer außerdem die python-dev-tools verwendet, kann über pip, einen Paketmanager für python-libraries, viele Erweiterungen auf seinem System zur Verwendung mit Django einbinden.

Ausblick auf das Beispielprojekt

In den weiteren Teilen der Django-Reihe möchte ich an einem Beispielprojekt praktisch die Vor- und Nachteile aufzeigen, aber vor allem auch, wie schnell und effektiv mit Django eine vollwertige Applikation umgesetzt werden kann.

In der Beispielanwendung wird es um das Verwalten von Ferienimmobilien gehen. Hier stehen Funktionalitäten an wie das Anlegen von Wohneinheiten, Einrichten von Preisen, Verwalten von Kunden und Buchungen bzw. deren Zahlungen, ein Belegungskalender etc. Danach beschäftigen wir uns mit dem Deployment der Anwendung.

Dazu werden wir eine Debian-VM aufsetzen, da ich nicht zu spezifisch für Windows oder Mac OSX werden will und mit Hilfe von VirtualBox und einer Debian-Distribution eine Testumgebung schnell und kostenlos eingerichtet ist. Neben Django werden wir, um das Ganze zu vereinfachen, noch Bootstrap, jQuery und jQuery-UI verwenden.

Nach der Artikel-Reihe sollten Sie die erforderlichen Kenntnisse erworben haben, um sich selbst an die Entwicklung von Webservices mit Django zu wagen. Stay tuned!

1 Kommentar zu “Rapid Web-Development mit Django, Teil 1”

Ich habe schon an einem großen Projekt als Designer mitgearbeitet, das Django für die gesamte Applikation verwendet hat. Aber ich bin nie wirklich dazu gekommen, mir selbst das große Ganze anzusehen. Schön, dass es hier mal jemand versucht, eine ganze Tutorial-Reihe zusammen zu bringen.
Zwei Teile gibt’s ja schon. Ich freu mich auf die kommenden 🙂

Schreibe einen Kommentar

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