[[Vorlage(getestet, jammy, focal, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Bild(Wiki/Icons/python.png, 48, align=left)]] [[Inhaltsverzeichnis()]] [https://www.djangoproject.com/ Django] {en} ist ein umfangreiches Webframework für [:Python:] und für diese Programmiersprache die wohl meistgenutzte Bibliothek zum Erstellen von Webapplikationen. Das Motto von Django lautet: \\ > "Django makes it easier to build better Web apps more quickly and with less code" auf Deutsch: "Django macht es einfach, bessere Webapplikationen mit weniger Code zu schreiben". Django bringt von Haus aus unter anderem die folgenden Komponenten mit: * Datenbankanbindung an SQL-Datenbanken via ORM (Object Relational Mapper) * automatisches, webbasiertes Admin-Interface zum Zugriff auf die Datenbank * eigene Vorlagen-Sprache ("Template system") * Bibliothek zum Umgang mit Formularen ("HTML forms") * diverse Sicherheitsmechanismen (z.B. Schutz vor "Cross site scripting" und "Cross site request forgery") * eigenes Cache-Framework * Möglichkeiten zur Internationalisierung * über Module erweiterbar Django ist dabei so modular aufgebaut, dass andere Komponenten/Bibliotheken auch problemlos genutzt werden können (z.B. ein anderes ORM). Für Django 3.2 (=die aktuelle LTS-Version von Django) wird Python 3.6 oder neuer vorausgesetzt. Ab Django 4.0 wird Python 3.8 vorausgesetzt, bei Ubuntu also 20.04 oder neuer. Ähnlich wie bei Ubuntu gibt es bei Django auch alle 2 Jahre eine LTS-Version (LTS = Long Term Support), welche drei Jahre lang mit Updates versorgt wird. Außerdem soll ein Upgrade von LTS- zu LTS-Version ohne größere Probleme vonstatten gehen. Normalerweise soll eine neue LTS alle zwei Jahre im April erscheinen. Die aktuelle LTS Version ist Django 3.2 (erschienen im April 2021), die nächste LTS-Version wird 4.2, welche für April 2023 geplant ist. Siehe zur Versionierung auch die [https://www.djangoproject.com/download/ Download-Seite]. Nicht-LTS Version von Django erhalten dagegen nur neun Monate Support. Nur am Rande: [http://ubuntuusers.de/inyoka/ Inyoka], die Plattform von ubuntuusers.de, setzt übrigens auch in weiten Teilen auf Django. = Installation = == aus den Paketquellen == Django ist in den offiziellen Paketquellen vorhanden, allerdings in einer nicht-aktuellen bis veralteten Version (je nach Ubuntu-Version). Das Paket heißt[1]: {{{#!vorlage Paketinstallation python3-django }}} Von daher empfiehlt es sich, die aktuelle Version bzw. die aktuelle LTS-Version manuell zu installieren. == via pip == {{{#!vorlage PipInstallation Django }}} Je nach Einsatzzweck (z.B. Test von Modulen für Django), empfiehlt es sich, Django in einem [:venv:virtual environment] zu installieren. == via git == Weiterhin kann der Quellcode von GitHub bezogen werden. Die einzelnen Schritte der Installation finden sich in der [https://docs.djangoproject.com/en/4.1/topics/install/#installing-the-development-version Dokumentation] {en}. = Benutzung = Django benötigt zum Betrieb eine SQL-Datenbank. Standardmäßig wird [:SQLite:] eingesetzt, welches Python bereits an Bord hat, so dass hier keine weiteren Installationsschritte nötig sind. Möchte man für ein größeres Projekt lieber z.B. [:PostgreSQL:] oder [:MySQL:] einsetzen, so ist zuerst noch der Datenbank-Server als auch das Python-Module für die Datenbankanbindung zu installieren. {{{#!vorlage Hinweis Die folgende Beschreibung gilt für Django 3.2. Bei anderen Django-Versionen kann das Vorgehen eventuell (etwas) anders sein. Des weiteren wird davon ausgegangen, dass Django SQLite als Datenbank benutzt. Beim Einsatz anderer Datenbanken sind weitere Konfigurationsschritte notwendig. }}} == Ein Projekt anlegen == Um eine Webapplikation mit Django zu erstellen, wird zuerst ein Projekt angelegt. Diese kann grundsätzlich in jedem beliebigen Verzeichnis liegen. Der Befehl[2] {{{#!vorlage Befehl django-admin.py startproject mein_projekt }}} legt alle Dateien und Unterverzeichnisse für das Projekt "mein_projekt" im aktuellen Verzeichnis an. Dort liegt jetzt ein Unterverzeichnis namens '''mein_projekt''', welches die Datei '''manage.py''' sowie ein weiteres Verzeichnis '''mein_projekt''' enthält. Letzteres enthält die Grundkonfiguration des Projekts in der Datei '''settings.py''', die zentrale Datei für das URL-Routing '''url.py''' sowie eine Datei '''wsgi.py'''. Die zuvor genannten Datei '''manage.py''' dient zum "Steuern" von Django (wie z.B. zum Anlegen von Applikation, Datenbankmigration, Starten des Entwicklungsservers etc.) Wie gesagt wird in der Datei '''urls.py''' das URL-Routing des Projekts festgelegt, d.h. es wird bestimmt, welche Python-Funktion beim Aufruf welcher URL ausgeführt wird. Eine vollständige Übersicht über die Nutzung und Möglichkeiten sind in der [https://docs.djangoproject.com/en/3.2/topics/http/urls/ offiziellen Dokumentation] {en} zu finden. Als nächstes wird die Datenbank angelegt, welche später die Datenmodelle als auch einige von Django benötigte Tabellen enthält. Dazu gibt man in dem Verzeichnis, in dem die Datei '''manage.py''' liegt, folgenden Befehl ein: {{{#!vorlage Befehl python3 manage.py migrate }}} Startet man jetzt den Entwicklungsserver von Django über {{{#!vorlage Befehl python3 manage.py runserver }}} und ruft im Browser die Seite `http://localhost:8000`, so sollte man die "It worked!" Seite von Django sehen - und weiß, dass die eigene Django-Installation grundsätzlich funktioniert. == Eine Applikation anlegen == Ein Django-Projekt kann aus ein oder mehreren Applikationen bestehen. Zum Anlegen einer Applikation namens ''app1'' dient der folgende Befehl: {{{#!vorlage Befehl python3 manage.py startapp app1 }}} Jetzt legt Django ein Verzeichnis '''app1''' an, worin sich unter anderem die Dateien '''models.py''' und '''views.py''' befinden. In der Datei '''models.py''' können die Datenmodelle in Form von Python-Klassen für die Applikation angelegt werden. Für jede Klasse wird dann später eine eigene Tabelle in der Datenbank generiert. In der Datei '''views.py''' werden die Funktionen definiert, welche in der Datei '''urls.py''' eine URL zugeordnet sind. Hier werden also die Inhalte generiert, die später an den Webbrowser zurück geliefert werden. == Vollständige Anleitungen für Beispielapplikation == Ein vollständiges Beispiel für ein Django-Projekt mit einer Beispielapplikation würden hier zu weit führen. Als Einführung ist aber das [https://docs.djangoproject.com/en/3.2/intro/tutorial01/ 6-teilige Tutorial] {en} in der offiziellen Django-Dokumentation absolut empfehlenswert. Ein zweites, für Einsteiger sehr gut geeignetes Tutorial ist [http://tutorial.djangogirls.org/ Django for girls] {en} (ab Kapitel 5). Entgegen dem Titel kann dieses Tutorial auch bedenkenlos von Männern gelesen werden. == Django mit weiteren Module erweitern == Wie in der Einleitung bereits erwähnt gibt es für Django eine sehr große Anzahl von Modulen, die die Funktionen des Frameworks noch erweitern. Eine gute Anlaufstelle hierfür ist die Seite [https://www.djangopackages.com/ djangopackages] {en}, welche eine Vielzahl von Modulen auflistet und nach Kategorien sortiert. = Links = * [https://docs.djangoproject.com/en/3.2/ offizielle Dokumentation] {en} zu Django 3.2. Sehr strukturiert, ausführlich und mit vielen Beispielen * [http://tutorial.djangogirls.org/ Django for girls] {en} - sehr empfehlenswertes Tutorial #tag: Programmierung, Internet, Python, Webprogrammierung