Django

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Django ist ein Web-Framework für Python. Es bringt vieles schon mit, was Webanwendungen brauchen: Datenbankzugriff über Python-Klassen statt SQL, Benutzerverwaltung, Formulare, Schutz vor typischen Angriffen und eine fertige Verwaltungsoberfläche (Admin), mit der sich Daten ohne eigenen Code pflegen lassen.

Vorbemerkungen

  • Installation über apt: Ubuntu 26.04 liefert Django 5.2. Das ist die aktuelle Version mit Langzeitunterstützung (LTS), sie bekommt bis April 2028 Sicherheitskorrekturen. Die neueren Versionen 6.x gibt es nur über pip, siehe Abschnitt am Ende.
  • Datenbank: Für den Anfang verwendet Django SQLite. Die Daten liegen dann in einer einzelnen Datei im Projektordner, ein Datenbankserver ist nicht nötig. Später lässt sich auf PostgreSQL umstellen.
  • Projekt und App: Ein Django-Projekt ist die gesamte Website mit ihren Einstellungen. Es besteht aus einer oder mehreren Apps, die jeweils einen Bereich abdecken, hier eine App notizen.

Installation

1. Paketlisten aktualisieren

Damit apt die aktuelle Version von Django aus den Ubuntu-Paketquellen kennt.

sudo apt update

2. Django installieren

Installiert Django und den Befehl django-admin. Die benötigten Hilfsbibliotheken (python3-asgiref, python3-sqlparse) installiert apt automatisch mit.

sudo apt install python3-django

Prüfen: Die Ausgabe ist die Versionsnummer, z. B. 5.2.9.

django-admin --version

Erstes Projekt

3. Projektordner anlegen

Ein eigener Ordner für das Projekt.

mkdir ~/meinprojekt

4. In den Projektordner wechseln

Alle weiteren Befehle beziehen sich auf diesen Ordner.

cd ~/meinprojekt

5. Projekt anlegen

Erzeugt das Grundgerüst. Der Punkt am Ende bedeutet: direkt in diesen Ordner, ohne zusätzlichen Unterordner. Es entstehen die Datei manage.py (das Werkzeug für alle weiteren Befehle) und der Ordner meinprojekt mit den Einstellungen (settings.py) und den Adressen (urls.py).

django-admin startproject meinprojekt .

Prüfen: Es werden manage.py und meinprojekt angezeigt.

ls

6. Sprache und Zeitzone einstellen

Stellt die Oberfläche auf Deutsch und die Zeitzone auf Mitteleuropa um. Das betrifft vor allem die Verwaltungsoberfläche und die Anzeige von Datum und Uhrzeit.

nano meinprojekt/settings.py

Suche mit Strg+W nach LANGUAGE_CODE und drücke Enter. Ändere diese Zeile und die Zeile TIME_ZONE zwei Zeilen darunter, sodass sie lauten:

LANGUAGE_CODE = 'de-de'

TIME_ZONE = 'Europe/Berlin'

Speichere mit Strg+O und Enter und beende nano mit Strg+X.

Prüfen: Die Ausgabe zeigt LANGUAGE_CODE = 'de-de' und TIME_ZONE = 'Europe/Berlin'.

grep -E "^(LANGUAGE_CODE|TIME_ZONE)" meinprojekt/settings.py

7. App anlegen

Erzeugt die App notizen als eigenen Ordner mit Dateien für Datenmodelle (models.py), Seitenlogik (views.py) und Verwaltungsoberfläche (admin.py).

python3 manage.py startapp notizen

8. App im Projekt anmelden

Django berücksichtigt eine App erst, wenn sie in der Liste INSTALLED_APPS in settings.py steht. notizen kommt ans Ende der Liste.

nano meinprojekt/settings.py

Suche mit Strg+W nach staticfiles und drücke Enter. Der Cursor steht in der letzten Zeile der Liste INSTALLED_APPS. Drücke Ende und Enter und tippe darunter die neue Zeile, eingerückt mit vier Leerzeichen:

    'notizen',

Speichere mit Strg+O und Enter und beende nano mit Strg+X.

Prüfen: Die letzte Zeile der Liste lautet 'notizen',.

grep -A 8 '^INSTALLED_APPS' meinprojekt/settings.py

Daten, Verwaltung und eine Seite

9. Datenmodell anlegen

Ein Modell ist eine Python-Klasse, aus der Django eine Datenbanktabelle macht. Jedes Feld wird zu einer Spalte. Die Texte in Anführungszeichen (z. B. "Titel") sind die Beschriftungen in der Verwaltungsoberfläche. auto_now_add trägt beim Anlegen automatisch Datum und Uhrzeit ein. Meta legt den Namen in Einzahl und Mehrzahl sowie die Sortierung fest (neueste zuerst).

nano notizen/models.py

Die Datei hat schon Inhalt aus der Vorlage, der vollständig ersetzt wird. Lösche ihn zuerst: Alt+\ springt an den Anfang, Alt+A beginnt eine Markierung, Alt+/ springt ans Ende, Strg+K schneidet alles Markierte aus. Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:

from django.db import models


class Notiz(models.Model):
    titel = models.CharField("Titel", max_length=200)
    text = models.TextField("Text", blank=True)
    erstellt = models.DateTimeField("Erstellt", auto_now_add=True)

    class Meta:
        verbose_name = "Notiz"
        verbose_name_plural = "Notizen"
        ordering = ["-erstellt"]

    def __str__(self):
        return self.titel

10. Migration erzeugen

Eine Migration ist eine Datei, die beschreibt, wie die Datenbank an das Modell angepasst wird. Django erzeugt sie selbst aus dem Modell. Bei jeder späteren Änderung am Modell wiederholst du diesen und den nächsten Schritt.

python3 manage.py makemigrations notizen

Prüfen: Die Ausgabe enthält + Create model Notiz.

11. Datenbank anlegen

Führt alle Migrationen aus: die eigenen und die der mitgelieferten Apps (Benutzer, Sitzungen, Verwaltung). Dabei entsteht die Datenbankdatei db.sqlite3.

python3 manage.py migrate

Prüfen: Die letzten Zeilen enden jeweils mit OK, darunter Applying notizen.0001_initial... OK.

12. Notizen in der Verwaltungsoberfläche anzeigen

Meldet das Modell bei der Verwaltungsoberfläche an. list_display legt die Spalten der Übersicht fest, search_fields die Felder, in denen die Suche sucht.

nano notizen/admin.py

Die Datei hat schon Inhalt aus der Vorlage, der vollständig ersetzt wird. Lösche ihn zuerst: Alt+\ springt an den Anfang, Alt+A beginnt eine Markierung, Alt+/ springt ans Ende, Strg+K schneidet alles Markierte aus. Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:

from django.contrib import admin

from .models import Notiz


@admin.register(Notiz)
class NotizAdmin(admin.ModelAdmin):
    list_display = ["titel", "erstellt"]
    search_fields = ["titel", "text"]

13. Administrator anlegen

Legt ein Benutzerkonto mit vollen Rechten für die Verwaltungsoberfläche an. Der Befehl fragt nach Benutzername, E-Mail-Adresse (darf leer bleiben) und zweimal nach dem Passwort. Die Eingabe des Passworts wird nicht angezeigt.

python3 manage.py createsuperuser

Prüfen: Die Ausgabe endet mit Superuser created successfully.

14. Eine eigene Seite schreiben

Eine View ist eine Funktion, die eine Anfrage bekommt und eine Antwort zurückgibt. Diese hier liefert alle Notizen als JSON, also als einfache REST-Schnittstelle. Für HTML-Seiten würde man stattdessen eine Vorlage (Template) verwenden.

nano notizen/views.py

Die Datei hat schon Inhalt aus der Vorlage, der vollständig ersetzt wird. Lösche ihn zuerst: Alt+\ springt an den Anfang, Alt+A beginnt eine Markierung, Alt+/ springt ans Ende, Strg+K schneidet alles Markierte aus. Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:

from django.http import JsonResponse

from .models import Notiz


def liste(request):
    notizen = Notiz.objects.values("id", "titel", "erstellt")
    return JsonResponse({"notizen": list(notizen)})

15. Adresse für die Seite festlegen

Ersetzt die Adressliste des Projekts. Neben der Verwaltungsoberfläche unter /admin/ ist die neue View jetzt unter /notizen/ erreichbar.

nano meinprojekt/urls.py

Die Datei hat schon Inhalt aus der Vorlage, der vollständig ersetzt wird. Lösche ihn zuerst: Alt+\ springt an den Anfang, Alt+A beginnt eine Markierung, Alt+/ springt ans Ende, Strg+K schneidet alles Markierte aus. Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:

from django.contrib import admin
from django.urls import path

from notizen import views

urlpatterns = [
    path("admin/", admin.site.urls),
    path("notizen/", views.liste),
]

16. Projekt prüfen

Django untersucht Einstellungen, Modelle und Adressen auf Fehler, ohne den Server zu starten.

python3 manage.py check

Prüfen: Die Ausgabe lautet System check identified no issues (0 silenced).

Starten und testen

17. Entwicklungsserver starten

Startet den eingebauten Webserver auf http://127.0.0.1:8000. Er ist nur vom eigenen Rechner aus erreichbar und lädt geänderte Python-Dateien automatisch neu. Das Terminal bleibt dabei belegt. Für den echten Betrieb ist er nicht gedacht.

python3 manage.py runserver

Prüfen: Die Ausgabe enthält Starting development server at http://127.0.0.1:8000/. Die gelbe Warnung darunter erinnert nur daran, dass dieser Server nicht für den echten Betrieb gedacht ist.

18. Notiz in der Verwaltungsoberfläche anlegen

Öffne http://127.0.0.1:8000/admin/ im Browser und melde dich mit dem Konto aus Schritt 13 an. Die Oberfläche heißt „Django-Systemverwaltung“. Unter Notizen klickst du auf Hinzufügen, gibst einen Titel und einen Text ein und klickst auf Sichern.

Prüfen: Die Notiz erscheint in der Übersicht mit Titel und Erstellungszeit.

19. Eigene Seite abrufen

Öffne ein zweites Terminal und frage die View aus Schritt 14 ab.

curl http://127.0.0.1:8000/notizen/

Prüfen: Die Antwort enthält die angelegte Notiz, z. B. {"notizen": [{"id": 1, "titel": "Erste Notiz", "erstellt": "…"}]}.

20. Server beenden

Wechsle in das erste Terminal und drücke Strg+C.

Wie geht es weiter?

  • PostgreSQL statt SQLite: Mit dem Paket python3-psycopg (über apt) und einer angepassten Einstellung DATABASES in settings.py verwendet Django eine PostgreSQL-Datenbank.
  • Betrieb mit nginx: Für den echten Betrieb startet man Django mit einem Anwendungsserver wie Gunicorn (Paket gunicorn) und setzt nginx davor. In settings.py müssen dann DEBUG = False gesetzt und ALLOWED_HOSTS sowie SECRET_KEY angepasst werden.
  • REST-Schnittstellen: Das Django REST Framework (Paket python3-djangorestframework) erleichtert umfangreichere Schnittstellen.
  • Entwicklungsumgebung: VS Code mit der Python-Erweiterung oder PyCharm unterstützen Django-Projekte.

Alternative: neueste Version über pip

Die aktuelle Version Django 6.1 bekommst du nur über pip in einer virtuellen Umgebung, genau wie in der LangGraph-Anleitung beschrieben. Im Projektordner:

python3 -m venv .venv
source .venv/bin/activate
pip install django

Solange die virtuelle Umgebung aktiv ist, verwenden django-admin und python3 manage.py diese Version. Sie bekommt aber keine Updates über apt, und du musst sie selbst mit pip install -U django aktuell halten.

Deinstallieren

1. Projekt entfernen

Löscht den Projektordner samt Datenbank db.sqlite3. Achtung: Alle darin gespeicherten Daten gehen verloren.

rm -rf ~/meinprojekt

2. Django entfernen

Entfernt das Paket.

sudo apt purge python3-django

3. Nicht mehr benötigte Pakete entfernen

Entfernt die Hilfsbibliotheken, die nur für Django installiert wurden.

sudo apt autoremove

Prüfen: Der Befehl wird nicht mehr gefunden.

django-admin --version

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.

Autor: Thorsten · Installationsanleitungen für Ubuntu

Alle Anleitungen ohne Gewähr. Befehle mit sudo verändern das System – vorher lesen, dann ausführen.