EMZETT.
Login

Django

Kurz: Ein “Batteries-included”-Webframework für Python — bringt ORM, Admin-Oberfläche, Authentifizierung und mehr direkt mit, statt sie einzeln zusammenzustellen.

Genauer: Django folgt der Philosophie, für die meisten Standardaufgaben einer Webanwendung (Datenbankzugriff, Nutzerverwaltung, Formulare) eine fertige, gut integrierte Lösung mitzuliefern, statt wie minimalistischere Frameworks nur ein Grundgerüst zu bieten. Besonders bekannt ist das automatisch generierte Admin-Panel für Datenbankinhalte.

Im Detail

Model-View-Template-Architektur

Django folgt dem Model-View-Template-Muster (eine Variante von MVC, mit leicht anderer Begriffszuordnung — Djangos “View” entspricht eher dem klassischen “Controller”): Models definieren die Datenstruktur in Python-Klassen und werden von Djangos eingebautem ORM automatisch auf Datenbanktabellen abgebildet, Views enthalten die Anwendungslogik (welche Daten werden geladen, welche Aktion passiert bei einer Anfrage), Templates rendern das finale HTML mit eingebetteten Platzhaltern für dynamische Inhalte.

from django.db import models
 
class Bestellung(models.Model):
    kunde = models.CharField(max_length=100)
    betrag = models.DecimalField(max_digits=8, decimal_places=2)
    erstellt_am = models.DateTimeField(auto_now_add=True)
 
    def __str__(self):
        return f"Bestellung von {self.kunde}"

Automatische Generierung aus dem Model

Aus einer solchen Model-Definition generiert Django automatisch mehrere zusammenhängende Bausteine:

  • Datenbanktabelle: über “Migrations” (vergleichbar mit versionierten Schema-Änderungsskripten, die sich automatisch aus Änderungen an den Model-Klassen ableiten lassen).
  • Admin-Interface: ein vollständiges, sofort nutzbares Web-Interface zum Verwalten der Datensätze, ganz ohne eigenen zusätzlichen Code — für interne Tools oder schnelles Prototyping ein enormer Zeitgewinn.
  • Formular-Basis: Formulare, die automatisch die Model-Felder validieren (Pflichtfelder, maximale Länge, korrekte Datentypen), statt jede Validierungsregel manuell nachzubauen.
  • Query-API: ein mächtiges ORM zum Abfragen der Daten in Python-Syntax statt rohem SQL (Bestellung.objects.filter(betrag__gt=100)).

Django vs. minimalistische Frameworks

Dieser “Batteries-included”-Ansatz steht im Gegensatz zu minimalistischeren Frameworks wie Flask (auch Python) oder Express (Node.js), die absichtlich nur ein schlankes Grundgerüst liefern (Routing, HTTP-Handling) und dem Entwickler komplett überlassen, welche Bibliotheken er für Datenbank, Authentifizierung, Formulare usw. kombiniert. Django bietet dafür schnelleren Einstieg und mehr Konsistenz (jedes Django-Projekt sieht strukturell ähnlich aus), die minimalistischeren Alternativen mehr Flexibilität für unkonventionelle Architekturen, die nicht in Djangos vorgegebenes Muster passen.

Sicherheit “out of the box”

Django legt großen Wert auf sichere Voreinstellungen: automatischer Schutz vor SQL-Injection (durch die ORM-Abstraktion, die Nutzereingaben nie direkt in SQL-Strings einbaut), eingebauter CSRF-Schutz (Cross-Site-Request-Forgery — verhindert, dass fremde Webseiten unbemerkt Formulare im Namen eines eingeloggten Nutzers absenden) und automatisches Escaping von Nutzereingaben in Templates gegen XSS-Angriffe. Diese Sicherheitsmechanismen sind standardmäßig aktiv, statt optional zugeschaltet werden zu müssen — ein bewusster Designentscheid, der die Einstiegshürde für sichere Anwendungen senkt.

Siehe auch: Node.js, PostgreSQL, Authentifizierung