40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django 

In der heutigen Zeit unterscheidet sich die Technik im World Wide Web drastisch von ihren Anfängen: Das rein informative Netzwerk aus statischen HTML-Seiten hat sich zu einer interaktiven Austauschplattform entwickelt, mit der praktisch alles möglich ist. Man kann über das Internet einkaufen, seinen nächsten Urlaub buchen, die Nachrichten verfolgen, seine sozialen Kontakte in Chats oder auf Community-Seiten pflegen oder bei der Gestaltung von Wissensdatenbanken wie der Wikipedia mitwirken.
Alle diese neuen Möglichkeiten verdankt das Internet im Wesentlichen den Programmen, die die Webseiten dynamisch mit den geforderten Daten generieren. Die Webprogrammierung war lange Zeit hauptsächlich eine Domäne für die Skriptsprache PHP[ 202 ](PHP (rekursive Abkürzung von PHP: Hypertext Preprocessor) ist eine Skriptsprache, die für die Einbettung in HTML-Seiten entwickelt wurde. Die Syntax von PHP ist an die Programmiersprache C angelehnt. Nahezu jeder Hosting-Service bietet heute Unterstützung für PHP-Skripte an. ), die sich in der Vergangenheit – mangels Alternativen – durchgesetzt hat. Skriptsprachen im Allgemeinen eignen sich besonders für die Programmierung von Webanwendungen, weil die Entwicklungszeiten aufgrund der geringeren technischen Komplexität gegenüber maschinennahen Programmiersprachen oft erheblich kürzer sind, sodass sich neue Funktionen schnell umsetzen lassen und weniger Code für die gleiche Funktionalität benötigt wird. Außerdem ist gerade bei Programmen im WWW die Ausführungsgeschwindigkeit häufig weniger wichtig, da die meiste Zeit in der Regel nach dem Ende des Programms durch die verhältnismäßig langsame Verbindung zwischen Server und Client verloren geht.
Heutzutage ist PHP nicht mehr die einzige serverseitige Programmiersprache, die die oben genannten Kriterien erfüllt. An die Seite von PHP gesellen sich Sprachen wie Perl, Java, Ruby und im Besonderen Python.
Um den speziellen Anforderungen gerecht zu werden, die sich bei der Entwicklung dynamischer Webseiten ergeben, werden sogenannte Webframeworks verwendet. Das Ziel dieser Frameworks besteht darin, dem Programmierer die immer wiederkehrenden Aufgaben abzunehmen, die sich bei der Erstellung dynamischer Internetseiten ergeben. Dazu zählen
- die Kommunikation mit dem Webserver,
- die Generierung von HTML-Ausgaben durch Template-Systeme und
- der Zugriff auf Datenbanken.
Im Optimalfall braucht der Entwickler sich nicht mehr um die Besonderheiten der Datenbank und des Servers zu kümmern, sondern kann sich darauf konzentrieren, die Funktionen seiner Anwendung zu implementieren.
Es gibt viele Webframeworks für Python, die alle ihre Vor- und Nachteile haben. Wir werden im Rahmen dieses Buchs das Framework Django behandeln, das sich durch seinen Funktionsumfang, seine Eleganz und seine weite Verbreitung auszeichnet. Django ist ein ausgereiftes Framework, das 2005 zum ersten Mal veröffentlicht wurde. Es ist kostenlos unter der BSD-Lizenz verfügbar und besonders für die Entwicklung komplexer datenbankgestützter Anwendungen konzipiert. Beispiele für Internetplattformen, die auf Django setzen, sind Instagram, Pinterest oder die Hilfeseiten des Webbrowsers Firefox.
Aufgrund des großen Umfangs von Django werden wir Ihnen in diesem Kapitel nur grundlegendes Wissen vermitteln können. Es gibt aber im Internet sehr viel gute Dokumentation zum Thema Django. Besonders sei Ihnen dabei die Homepage des Projekts, http://www.djangoproject.com, ans Herz gelegt, die ausführliche Beschreibungen in englischer Sprache bereitstellt.
Um Sie mit den Grundlagen von Django vertraut zu machen, werden wir im Folgenden eine kleine Webanwendung implementieren, die News-Beiträge verwalten kann. Außerdem wird es für die Besucher der Seite möglich sein, Kommentare zu den einzelnen Meldungen abzugeben.
40.1 Konzepte und Besonderheiten von Django 

Django setzt auf das Model-View-Konzept, das Sie schon in Abschnitt 39.7 über Qt kennengelernt haben. Eine typische Django-Anwendung definiert ein Datenmodell, das automatisch von Django in einer Datenbank verwaltet wird. Die Ausgabe für Endbenutzer übernehmen sogenannte Views (dt. Ansichten), die auf das Datenmodell zurückgreifen können.
Zurzeit unterstützt Django die Datenbanken MySQL, SQLite3 und PostgreSQL[ 203 ](SQLite3 ist als Modul in Pythons Standardbibliothek enthalten und kann ohne besondere Konfiguration sofort benutzt werden. Für MySQL und PostgreSQL benötigen Sie einen separaten Datenbankserver. ). Außerdem befinden sich Anbindungen für Microsofts SQL-Server MSSQL und für den Oracle-Datenbankserver in der Entwicklung.
Der Webentwickler bleibt beim Umgang mit den Datenmodellen vor technischen Details wie der Abfragesprache SQL vollkommen verschont. Seine Aufgabe besteht nur darin, Django mitzuteilen, welche Datenbank verwendet werden soll. Das Datenbanklayout wird über Python-Code definiert, und Django übernimmt die Kommunikation mit der Datenbank.
Als besonderes Bonbon für den Webentwickler erstellt Django anhand der Modelldefinition automatisch eine Administrationsoberfläche, um die Daten des Modells zu verwalten.
Django unterscheidet zwischen Projekten und Applikationen (auch Apps genannt). Als Projekt wird eine Website als Ganzes bezeichnet, die beispielsweise eine News-Seite, ein Forum und ein Gästebuch umfassen kann. Applikationen sind dafür zuständig, die Funktionen eines Projekts zu realisieren. Im Beispiel hätte das Projekt also drei Applikationen: eine News-Applikation, eine Forum-Applikation und eine Applikation für das Gästebuch.
Django vertritt das Prinzip des Loose Coupling (dt. schwache Kopplung) für alle Teile der Webanwendung. Das bedeutet, dass möglichst viel unabhängig voneinander entwickelt werden kann, sodass die einzelnen Teile auf anderen Seiten verwendet werden können. Insbesondere soll es problemlos möglich sein, Applikationen in verschiedenen Projekten zu verwenden, ohne den Code wesentlich anpassen zu müssen.
Ein weiteres Prinzip von Django lautet DRY für Don’t Repeat Yourself (dt. wiederhole dich nicht). In der Praxis sorgt die Umsetzung dieses Prinzips beispielsweise dafür, dass Django Angaben zu den verwendeten Datenobjekten einerseits zur Verwaltung der Datenbank, andererseits zur Bereitstellung einer Administrationsoberfläche verwendet.