Was ist Django?

Ein Blick auf das Python Web-Framework

  • 23. Mai 2020

Als Web-Entwickler stehe ich immer wieder vor der Herausforderung, Kunden und anderen Nicht-Programmierern zu erklären, was dieses Tool namens Django ist, von dem ich so begeistert bin. Da Django bei Schweizer Web-Agenturen immer beliebter wird um zuverlässige, schnelle und sichere Webseiten zu erstellen, taucht der Name im Zusammenhang mit Web-Apps und Webseiten-Entwicklung immer öfter auf. Doch was ist Django eigentlich? In diesem Blog-Beitrag versuche ich, diese Frage mit einem Blick aus der Vogelperspektive und auch für Nicht-Programmierer verständlich, zu beantworten.

Um besser zu verstehen, was Django ist, hilft ein Blick in die Geschichte des Internets. Als das World Wide Web, kurz WWW, Anfang der Neunzigerjahre von Tim Berners-Lee am Kernforschungszentrum CERN in Genf erfunden wurde, bestand eine Internetseite im Grunde genommen aus nichts anderem als einer Sammlung von Text-Dokumenten, deren Inhalt mit der Hypertext Markup Language, kurz HTML, formatiert wurde. Diese Dokumente waren auf einem Webserver im Internet gespeichert und über Links miteinander verbunden. Jedes Mal, wenn ein Benutzer auf einen Link in einer dieser Dateien klickte, wurde das verlinkte Dokument über das Internet mithilfe des Hypertext Transfer Protokolls (HTTP) an den Benutzer gesendet und im Browser angezeigt.

Eine HTML-Datei namens «index.html». Links die Ansicht in einem Text-Bearbeitungsprogramm und rechts wie die gleiche Datei in einem Web-Browser, hier Chrome, dargestellt wird. Bei der Ansicht im Text-Bearbeitungsprogramm sieht man deutlich die im Web-Browser unsichtbaren Gestaltungsanweisungen für den Browser.

Statische versus dynamische Webseiten

Webseiten, die ausschliesslich aus einer Vielzahl von HTML-Dateien bestehen, die über Links miteinander verbunden sind, gehören keineswegs der Vergangenheit an. Solche Webseiten sind auch heute noch häufig anzutreffen und werden manchmal «statische» Webseiten genannt. Dies um sie von den «dynamischen» Webseiten abzugrenzen. Mit einer statischen Webseite findet eine einfache Kommunikation zwischen der Seite und einem Benutzer statt. Die einzige Interaktion ist das Klicken von Links. Was auch schon viel mehr ist als bei einem Medium wie dem Fernsehen oder einem Buch. Dynamische Webseiten hingegen ermöglichen eine interaktive Kommunikation zwischen einer Webseite und einem Benutzer. Man kann Daten eingeben und erhält darauf sofort eine spezifische Antwort. Ein Beispiel dafür ist eine Suche mit einer Suchmaschine wie zum Beispiel Google oder Bing. Der Besucher ruft die Seite auf und gibt seinen Suchbegriff ein. Die Webseite sendet diesen Suchbegriff an den Server und liefert die gefundenen Ergebnisse an den Besucher zurück. Auch Webshops, Webmail-Systeme und soziale Medien sind dynamische Webseiten.

Schematische Darstellung einer statischen Webseite: Der Benutzer schickt eine Anfrage über das Hypertext Transfer Protokoll (HTTP) an den Server, dieser wählt aus den auf dem Server gespeicherten HTML-Dateien die zur Anfrage passende aus und sendet diese an den Benutzer.

Dynamische Webseiten sind das Rückgrat des modernen Internets. Im Gegensatz zu einer statischen Webseite, die lediglich aus einer Anzahl von Dateien besteht, arbeitet bei einer dynamischen Webseite eine ganze Maschinerie im Hintergrund. Es gilt, Benutzeranfragen auszuwerten, Informationen aus Datenbanken abzurufen oder darin zu speichern und individuelle Ergebnisse an den Benutzer zurückzusenden. Um dies zu bewerkstelligen, besteht eine dynamische Webseite aus einer Vielzahl von Programmen, die alle genau eine spezifische Aufgabe erfüllen. Sei es das Anmelden eines Benutzers an einer Webseite, das Erstellen von Formularen oder das Versenden von E-Mails.

Schematische Darstellung einer dynamischen Webseite. Hinter der HTTP-Anfrage des Benutzers kommt eine ganze Maschinerie ins Laufen: Logische Abfragen werden bearbeitet, Datenbanken abgefragt, E-Mails versendet und Dateien ausgewählt und erstellt. Der Benutzer erhält eine individuell auf seine Abfrage erstelle Antwort.

Django ist ein Web-Framework

Hier kommen nun die sogenannten Web-Frameworks ins Spiel. In der Zeit vor den Web-Frameworks musste ein Programmierer jedes einzelne dieser Programme von Grund auf programmieren. Dies war und ist aufwendige und zeitraubende Knochenarbeit. Ein Web-Framework wie Django stellt solche Funktionen vorgefertigt zur Verfügung und der Programmierer oder das Programmierer-Team kann sich von Anfang an auf die einzigartigen Anforderungen des Projektes konzentrieren. Ein Web-Framework ist sozusagen ein Baukasten der aus vielen Einzelteilen besteht, der nach Belieben zusammengebaut werden kann. Das Web-Framework stellt dabei nicht die fertige Webseite zur Verfügung, sondern die Grundlagen dafür. Der App-Programmierer kann darauf aufbauend die spezifischen Funktionen des Projektes programmieren.

Die Entstehungsgeschichte von Django

Django entstand 2003 bei der Zeitung Lawrence Journal-World in Lawrence, Kansas (USA) um die News-Webseite «World Online» zu verwalten. Das Web-Framework wurde von den Webentwicklern Adrian Holovaty, Simon Willison und Jacob Kaplan-Moss erstellt um die speziellen Anforderungen des Newsrooms umsetzen zu können. Ausschlag für die Entwicklung einer eigenen Software war ihre Unzufriedenheit mit den vorhandenen Tools, um die hohen Ansprüche der Journalisten zu erfüllen. Diese benötigten ein Werkzeug mit dem sie schnell und unkompliziert auf neue Erfordernisse reagieren konnten. Bei News-Ereignissen musste in wenigen Stunden eine komplexe Web-App konzipiert, programmiert, mit Inhalt befüllt und veröffentlicht werden.

Aus dieser Anforderung heraus entstand der sogenannte Django-«Admin». Damit können auch Nicht-Programmierer sofort nach der Erstellung einer Web-App Daten eingeben und bearbeiten. Es ist nicht notwendig, zu diesem Zweck zuerst ein Front-End zu programmieren (obwohl das später natürlich jederzeit nachgeholt werden kann). Dieses Feature ermöglicht es Django-Programmierern rasch eine Idee zu einem funktionierenden Prototyp zu führen. Ganz nach dem offiziellen Motto von Django, das da heisst: «Das Web-Framework für Perfektionisten mit Deadlines» («The Web framework for perfectionists with Deadlines»).

Der Django-Admin: Ein mächtiges Werkzeug, dass den schnellen Start und die einfache Verwaltung eines Projektes ermöglicht.

Die verschiedenen Tools, welche die Entwickler über die Jahre entwickelten, wurden im Jahr 2005 zu der ersten Version von Django zusammengefasst, und als Open-Source Code veröffentlicht. Open-Source heisst, dass der Quellcode öffentlich zugänglich ist und von jedermann eingesehen werden kann. Durch die Veröffentlichung unter der freizügigen BSD-Lizenz darf der Code und damit die Software frei verwendet werden. Es ist erlaubt den Code zu kopieren, zu verändern und nach Belieben zu verbreiten. Die einzige Bedingung ist, dass der ursprüngliche Copyright-Vermerk des Programms nicht entfernt werden darf. Damit kann Django frei für kommerzielle und nicht kommerzielle Projekte eingesetzt werden, ohne dass für die Benutzung des Web-Frameworks Kosten anfallen.

Django wird von der Django Software Foundation verwaltet, der meiste Code wird jedoch von Freiwilligen aus der ganzen Welt geschrieben und beigetragen.

Seinen Namen verdankt Django übrigens dem Jazz-Gitarristen Django Reinhardt. Adrian Holovaty, einer der Gründer von Django, ist selber ein passionierter Jazz Gitarrist und ein grosser Fan von Django Reinhard. Somit ist die Namenswahl eine Referenz an ein Idol des Programmierers.

Django ist Python-Software

Django ist in der Programmiersprache Python geschrieben. Python ist eine universell einsetzbare, moderne Programmiersprache mit vielen Einsatzmöglichkeiten. Sie ist neben Java, C, JavaScript und C++ eine der beliebtesten und meist eingesetzten Programmiersprachen der Welt (Quellen: 1, 2, 3, 4, 5). Die Sprache hat eine klare und übersichtliche Schreibweise (Syntax) und legt den Fokus auf gut lesbaren und knappen Programmierstil. Sie gilt als einfach zu erlernen und wird auch in der Wissenschaft in unterschiedlichen Disziplinen eingesetzt. Fast ein Hoheitsgebiet hat sich Python in den letzten Jahren in den Gebieten des maschinellen Lernens und der künstlichen Intelligenz (Deep Learning) geschaffen. Immer mehr Beliebtheit gewinnt die Programmiersprache in der Web-Entwicklung. Zu dieser Entwicklung hat Django einen grossen Beitrag geleistet.

Für welche Web-Projekte eignet sich Django?

Dank seiner modularen Struktur und Vielseitigkeit ist der Einsatzmöglichkeit von Django keine Grenzen gesetzt. Sei es eine News-Seite, ein Blog, ein Content-Management-System, eine Immobilien-Plattform oder ein Ticketschalter: «Kein Projekt ist zu gross oder zu klein um ein Django-Projekt zu sein».

Das sieht man auch an den Projekten, die auf Django setzen. Darunter sind Instagram, Mozilla (Entwickler von Firefox) und Bitbucket (Code-Verwaltungssystem). Andere populäre Dienste, die ganz oder teilweise auf Django setzen, sind YouTube, The Washington Post, Disqus und Spotify. Auch die NASA betreibt einige ihrer Webseiten mit diesem Framework. Alle diese Unternehmen operieren weltweit und sind darauf angewiesen, ihren Service Tag und Nacht an eine enorme Anzahl von Benutzern ausliefern zu können.

Drei Beispiele von Bekannten Webseiten, die mit Django betrieben werden. Von links nach rechts: The Washington Post, Mozilla (Entwickler des Open Source Browsers Firefox) und Instagram.

Dennoch ist es nicht so, das die Möglichkeit solche riesigen Projekte zu stemmen, die Programmierung von einfacheren und kleineren Projekten ausbremst. Im Gegenteil: Vor allem Projekte mit wenig Ressourcen profitieren von Beginn weg vom Baukastensystem Django und ein sicherer und sauberer Betrieb ist von Anfang an gewährleistet.

Der Betrieb einer Django Webseite ist Technologie-Unabhängig

Django kann mit allen bekannten Webservern wie dem Apache HTTP Server, nginx oder dem Microsoft IIS betrieben werden. Als Datenbank bevorzugt Django PostgreSQL aber auch Oracle, MySQL, SQLite und ab Version 3 auch MariaDB, werden unterstützt. Auf dem Server muss ausserdem Python in der Version 3.6 oder höher installiert sein. Diese Unabhängigkeit von spezifischen Technologien und die Modularität der einzelnen Softwarekomponenten, ermöglicht eine hohe Skalierbarkeit. Skalierbarkeit heisst hier, dass die Infrastruktur für eine Webseite, die mit Django programmiert wurde, zu beliebiger Grösse ausgebaut werden kann. So kann eine Webseite auf einem einzelnen Server betrieben werden oder bei Bedarf auch mit einem Content Delivery Network (CDN) ausgeliefert werden.

Fazit

Django ist ein Web-Framework, dass darauf ausgelegt ist, die Umsetzung und Weiterentwicklung von Webseiten-Projekten zu vereinfachen. Mit seiner modularen Struktur und dem Fokus auf Sicherheit eignet sich Django für die Entwicklung von Web-Apps und Webseiten jeder Art. Das kann ein Blog sein oder das Content-Management-System von Firmen und Verbänden, aber auch ein Immobilienportal oder die Web-App eines Start-ups.

Das könnte dich auch interessieren

Python: beliebteste Programmiersprache 2021

  • 28. Januar 2022

Python ist die beliebteste Programmiersprache des Jahres 2021. Dies haben die Analysen des TIOBE-Index ergeben. Auch bei anderen Indizes, die Trends bei den  Programmiersprachen aufspüren wollen, belegt Python die ersten Plätze. Zu dieser Popularität tragen das grosse Einsatzgebiet von Python und dessen Zugänglichkeit für Programmieranfänger bei.

Erstellen eines Django-Projektes

  • 30. Januar 2021

Ein Django-Projekt zu erstellen ist nicht schwer und schnell erledigt. Dennoch besteht die Installation aus mehreren Schritten. In diesem Blog-Post habe ich diese festgehalten. Auf diese Weise kann ich ein neues Projekt schnell aufsetzen und mit der Arbeit an der eigentlichen Idee beginnen.

Django-Superkraft: Eine CRUD-Web-App in 60 Minuten

Teil 1: Installation und Konfiguration

  • 17. Juli 2020

Eine der Stärken von Django ist, dass man schnell zu präsentierbaren Ergebnissen gelangt. Ein Beispiel dafür ist die Arbeit mit einer Datenbank, was für eine moderne Web-App zentral ist. Bei vielen Systemen besteht die Herausforderung darin, zuerst die aufwendige Konfiguration des Datenbanksystems und der API richtig hinzubekommen, bevor überhaupt mit der Programmierung der Web-App begonnen werden kann. Nicht so in Django. Die Anbindung an eine Datenbank ist ein Kinderspiel. Dies zeige ich am Beispiel dieses Tutorials, in dem wir eine voll funktionsfähige Web-App mit Datenbankanbindung erstellen.

Django-Superkraft: Eine CRUD-Web-App in 60 Minuten

Teil 2: Erstellen des Front-End

  • 19. September 2020

Eine der Stärken von Django ist, dass man schnell zu präsentierbaren Ergebnissen gelangt. In diesem zweiteiligen Tutorial zeige ich auf, wie man in knapp 60 Minuten eine CRUD-App erstellt. Im ersten Teil haben wir das Projekt installiert und konfiguriert, die App initialisiert, die Datenbankmodelle hinzugefügt und mit dem Django-Admin verknüpft. In diesem Teil des Tutorials werden wir ein Front-End hinzufügen, das alle vier CRUD-Operationen unterstützt, plus eine Listenansicht der Datenbankeinträge.