Django – Framework für die Erstellung komplexer Websites mit Python
Eines dieser Frameworks ist Django. Dieses eignet sich für die Erstellung von Webseiten. In diesem Artikel stellen wir Ihnen vor, welche Funktionen Django bietet und welche Prinzipien das Framework verfolgt. Zum Abschluss präsentieren wir Ihnen ein einfaches Anwendungsbeispiel. Um dieses selbst nachzuvollziehen, sind einige Grundkenntnisse in Python hilfreich. Auf jeden Fall ist es notwendig, dass Sie bereits einen Python-Interpreter auf Ihrem System installiert haben. Sollte dies nicht der Fall sein, empfehlen wir zunächst die Lektüre eines unserer Einsteiger-Bücher für diese Programmiersprache.
Für welche Aufgaben lässt sich Django einsetzen?
Django ist ein Webframework. Daraus geht hervor, dass Sie damit Internetseiten erstellen können. Vielleicht stellen Sie sich nun die Frage, weshalb sie hierfür Django verwenden sollten – schließlich gibt es ja hierfür die bekannten Webtechniken wie HTML, CSS und PHP. Die Verwendung von Django bietet sich an, wenn Sie sich bereits gut mit Python auskennen und sich nicht in die übrigen Web-Technologien einarbeiten möchten. Doch selbst wenn Sie diese bereits beherrschen, profitieren Sie bei der Verwendung von Django von zahlreichen Vorteilen. Das Framework bietet viele hilfreiche Funktionen an. Diese können Sie mit wenigen Befehlen in Ihr Internetangebot einbinden. Programmieren Sie diese hingegen von Hand, benötigen Sie hierfür viel Zeit und häufig auch fortgeschrittene Programmierkenntnisse.
Django eignet sich insbesondere für datenbankbasierte Websites hervorragend. Sie können mit diesem Framework ausgesprochen einfach Werte aus einer Datenbank abfragen oder sie dort eintragen. Selbst sehr komplexe Strukturen lassen sich mit Django problemlos in vergleichsweise kurzer Zeit erzeugen. Django eignet sich außerdem für die Erstellung unterschiedlicher Webseiten. Es ist möglich, damit eine Unternehmens-Homepage, ein Content-Management-System, ein Wiki oder sogar ein soziales Netzwerk zu erstellen. Django unterstützt hierfür sehr vielfältige Techniken – von einfachem HTML bis hin zu RSS-Feeds.
Bei all diesen Aufgaben profitieren sie noch von einem weiteren großen Vorteil: Das Framework kümmert sich auch um die Sicherheit. Webseiten können zahlreiche Angriffsflächen bieten, die Hacker häufig ausnutzen, um großen Schaden anzurichten. Insbesondere unerfahrene Programmierer beachten die erforderlichen Sicherheitsmaßnahmen meistens nicht. Django bietet in diesem Bereich eine sehr große Unterstützung. Beispielsweise enthält das Framework eine Funktion, mit der Sie Nutzer-Accounts und Passwörter automatisch verwalten können. Diese setzt alle in diesem Bereich erforderlichen Sicherheits-Vorkehrungen automatisch um, ohne dass Sie sich selbst um diese Aufgabe kümmern müssen. Daher bietet Ihre Seite in diesem Bereich keine Angriffsflächen.
Wie praktisch die Verwendung von Django ist, zeigt sich auch bei einem Blick auf die Internetangebote, die dieses Framework verwenden. Das bekannteste von ihnen ist wohl das soziale Netzwerk Instagram. Doch auch einige weitere große Websites mit einem sehr komplexen Angebot – beispielsweise die Internetauftritte von Mozilla und Bitbucket sowie der Washington Times – wurden mit Django erstellt.
Was zeichnet Django aus?
Nachdem wir die Funktionen und den Einsatzzweck von Django besprochen haben, ist es sinnvoll, noch kurz auf die Philosophie einzugehen, die hinter dem Framework steckt. Von großer Bedeutung ist hierbei, dass es sich bei Django um Open-Source-Software handelt. Das bedeutet nicht nur, dass Sie das Framework vollkommen unentgeltlich nutzen können. Darüber hinaus ist auch der Quellcode offen einsehbar. Das kann nützlich sein, um die Funktionsweise zu verstehen und außerdem können Sie auf diese Weise einmal selbst nachschauen, wie ein solches Framework aufgebaut ist. Wenn Sie über gute Python-Kenntnisse verfügen, können Sie die Funktionen außerdem personalisieren und an Ihre persönlichen Bedürfnisse anpassen.
Eines der wichtigsten Prinzipien bei der Entwicklung von Django war DRY. Diese Abkürzung steht für „Don’t repeat yourself“ – auf Deutsch „Wiederhole dich nicht!“. Das Ziel besteht hierbei darin, Redundanzen im Code konsequent zu vermeiden. Eine einmal ausformulierte Aufgabe sollte nicht noch ein zweites Mal erscheinen. Das führt zu einem sehr kompakten und übersichtlichen Code. In dieser Hinsicht weist Django große Ähnlichkeiten mit Ruby on Rails auf – einem anderen bekannten Webframework, das auf der Programmiersprache Ruby basiert.
Die Entwicklung von Django
Die Entwicklung von Django begann 2003 im Verlag der Zeitung Lawrence Journal-World, die in der Stadt Lawrence in Kansas erscheint. Für die Entwicklung der Webseite waren die Programmierer Adrian Holovaty und Simon Willison verantwortlich. Diese begannen damit, Python-Anwendungen für die Gestaltung der Internetseite zu programmieren, um deren Gestaltung und Wartung zu vereinfachen. Auf diese Weise entstanden immer mehr einzelne Anwendungen, aus denen schließlich ein komplettes Framework erwuchs. Die Veröffentlichung erfolgte 2005. Vorerst blieb die Verantwortung für das Framework im Verlagshaus, in dem die Entwickler arbeiteten. 2008 entstand mit der Django Software Foundation eine Stiftung, die diese Aufgabe fortan übernahm.
Seinen Namen erhielt das Framework zu Ehren des französischen Jazz-Gitarristen Django Reinhardt. Einer der Entwickler – Adrian Holovaty – bewunderte diesen nicht nur aufgrund seiner musikalischen Leistung. Darüber hinaus stammen sowohl Holovaty als auch Reinhardt vom Volk der Sinti und Roma ab, sodass auch aufgrund dieser gemeinsamen Wurzeln ein großes Verbundenheitsgefühl bestand. Außerdem handelt es sich hierbei um einen sehr griffigen Namen, sodass das Entwickler-Team beschloss, diesen zu übernehmen.
Ein kleines Anwendungsbeispiel
Damit Sie sehen, auf welche Weise Sie mit Django eine Webseite gestalten können, schließen wir diesen Beitrag nun mit einem kleinen Anwendungsbeispiel ab. Hierfür wollen wir lediglich eine einfache Seite erstellen, die einen Text ausgibt.
Die Vorbereitungsmaßnahmen
Wie bereits in der Einleitung erwähnt, gehen wir für dieses Beispiel davon aus, dass Sie bereits einen Python-Interpreter installiert haben. Sollte dies nicht zutreffen, finden Sie unter dem folgenden Link ein passendes Download-Angebot: https://www.python.org/downloads/.
Nun müssen Sie Django installieren. Dafür benötigen Sie ein Paketverwaltungsprogramm. Hierfür können Sie pip verwenden. Mit dieser Software verwalten Sie alle Python-Erweiterungen. Um pip zu installieren, reicht in der Regel eine Befehlszeile im Kommandozeileninterpreter aus. Unter Windows können Sie beispielsweise den folgenden Befehl verwenden:
py -m ensurepip --upgrade
Weitere Optionen sowie Installationsanleitungen für andere Betriebssysteme entdecken Sie unter dem folgenden Link: https://pip.pypa.io/en/latest/installation/. Nachdem Sie pip installiert haben, bietet es sich an, einmal den folgenden Befehl einzugeben:
pip --version
Wenn daraufhin eine Versionsnummer erscheint, steht pip zur Nutzung bereit.
Nun können Sie Django mit einem Befehl installieren:
python -m pip install Django
Es bietet sich an, auch hierbei nochmals zu überprüfen, ob die Installation erfolgreich war. Dazu können Sie wieder die Versionsnummer abfragen:
python -m django --version
Wenn hier eine Versionsnummer erscheint, steht Ihnen das Framework zur Verfügung.
Ein neues Django-Projekt erstellen
Der erste Schritt, um mit Django zu arbeiten, besteht darin, ein neues Projekt zu erstellen. Hierfür müssen Sie zunächst im Kommandozeileninterpreter in das Verzeichnis wechseln, in dem Sie Ihr Projekt entwickeln möchten. Dort müssen Sie dann den folgenden Befehl eingeben:
django-admin startproject meineSeite
Damit erstellen Sie ein Projekt, das den Titel „meineSeite“ erhält. Wenn Sie den Befehl ausführen, bemerken Sie zunächst keine Veränderung. Wenn Sie jedoch den Inhalt des Ordners betrachten, erkennen Sie, dass hier nun ein Unterverzeichnis mit dem gleichen Namen wie Ihr Projekt entstanden ist. Darin sind weitere Dateien und Ordner enthalten.
Hinweis: Bei der Auswahl des Namens für Ihr Projekt müssen Sie darauf achten, dass manche Namen, die entweder in Python oder in Django eine besondere Bedeutung haben, zu Konflikten führen können. Beispielsweise sollten Sie Ihr Projekt niemals „django“ oder „test“ nennen. Wählen Sie stets einen individuellen Namen.
Die Seite erzeugen
Beim Erstellen des Projekts wurde automatisch eine erste Standard-Seite eingefügt. Diese wollen wir nun aufrufen. Zu diesem Zweck müssen Sie den Django-Entwicklungsserver starten. Wechseln Sie hierfür im Kommandozeileninterpreter in das Verzeichnis mit der Bezeichnung „meineSeite“, das automatisch bei der Projekterstellung erzeugt wurde. Geben Sie hier den folgenden Befehl ein:
python manage.py runserver
Hierbei erscheinen normalerweise einige Warnmeldungen, die Sie vorerst ignorieren können. Dennoch sollte nun der Server aktiviert sein. Achten Sie hierbei darauf, dass es sich hierbei lediglich um einen Entwicklungsserver handelt, der dazu dient, Ihre mit Django entwickelten Internetseiten auszuprobieren. Sollten Sie versuchen, diesen für eine öffentlich zugängliche Website zu verwenden, würde das zu erheblichen Sicherheitsproblemen führen.
Um die automatisch erstellte Testseite aufzurufen, müssen Sie nun einen Webbrowser Ihrer Wahl öffnen. Geben Sie hier in die Adressleiste die folgende Adresse ein:
Sobald Sie diese per Eingabetaste bestätigt haben, sollte die Seite erscheinen, die im folgenden Screenshot zu sehen ist:
Abb. 1: Die Standard-Seite von Django
Einfache Inhalte einfügen
Nun wollen wir noch ausprobieren, wie wir mit Django eigene Inhalte gestalten können. Für diesen Artikel beschränken wir uns auf eine einfache Textausgabe. Wenn Sie tiefer in dieses Thema einsteigen möchten, stellt Ihnen Django noch viele weitere Funktionen zur Verfügung, mit denen Sie schnell und einfach komplexere Inhalte hinzufügen können.
Wenn Sie eine Seite erstellen möchten, müssen Sie hierfür zunächst eine App erzeugen. Dafür benötigen Sie wieder den Kommandozeileninterpreter. Da in diesem jedoch gerade der Server ausgeführt wird, bietet es sich an, ein neues Fenster zu öffnen und erneut in das Verzeichnis meineSeite zu navigieren. Alternativ können Sie den Server auch mit Strg + C beenden.
Geben Sie nun diesen Befehl ein:
python manage.py startapp meineApp
Dabei entsteht ein neues Verzeichnis mit der Bezeichnung „meineApp“. Darin befindet sich eine Datei mit der Bezeichnung views.py. Öffnen Sie diese mit einem Texteditor. Löschen Sie die darin enthaltenen Inhalte und fügen Sie stattdessen diesen Code ein:
from django.http import HttpResponse
def index(request):
return HttpResponse("Meine erste Seite mit Django")
Dieser verwendet die Funktion HttpResponse(), die in Django eine einfache Textausgabe erzeugt. Nun müssen Sie noch dafür sorgen, dass die Seite richtig verlinkt wird. Erstellen Sie hierfür im Verzeichnis meineApp eine Datei mit der Bezeichnung urls.py und fügen Sie die folgenden Inhalte ein:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
Damit sorgen Sie dafür, dass die soeben gestaltete Seite erscheint, wenn Sie den Ordner meineApp im Browser aufrufen. Nun müssen Sie noch im Stammverzeichnis der Anwendung die gerade erstellte Datei verlinken. Dazu müssen Sie wieder in das Verzeichnis meineSeite wechseln. Darin befindet sich bereits eine Datei mit der Bezeichnung urls.py. Öffnen Sie diese mit einem Texteditor. Ganz oben befinden sich einige Kommentare, die keine Auswirkung auf die Ausführung haben. Darunter befindet sich bereits etwas Code. Hier müssen Sie nun die zuvor erstellte Datei einbinden. Dazu müssen Sie zum einen den zweiten import-Befehl erweitern. Zum anderen müssen Sie eine weitere Zeile in den urlpatterns einfügen. Der Code sieht nach dieser Veränderung so aus:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('meineApp/', include('meineApp.urls')),
path('admin/', admin.site.urls),
]
Nun können Sie ausprobieren, wie die Seite aussieht, die Sie erstellt haben. Falls Sie den Server geschlossen haben, müssen Sie ihn hierfür zunächst wieder aktivieren – auf die gleiche Weise wie oben vorgestellt. Geben Sie daraufhin die folgende Adresse ein:
http://127.0.0.1:8000/meineApp
Diese führt Sie in das Verzeichnis meineApp, das wir zuvor erstellt haben. Die Seite sollte etwa so aussehen, wie in der folgenden Abbildung: Es erscheint lediglich der Text, den wir mit der HttpResponse()-Funktion erzeugt haben.
Abb. 2: Die Seite mit der erstellten Textausgabe