Was ist Django?

Django ist eine Software, mit der Sie schnell und effizient Webanwendungen entwickeln können. Die meisten Webanwendungen verfügen über mehrere allgemeine Funktionen, wie Authentifizierung, Abrufen von Informationen aus einer Datenbank und Cookie-Verwaltung. Entwickler müssen in jeder Web-App, die sie schreiben, ähnliche Funktionen codieren. Django erleichtert ihre Arbeit, indem es die verschiedenen Funktionen in einer großen Sammlung wiederverwendbarer Module gruppiert, die als Webanwendungs-Framework bezeichnet werden. Entwickler verwenden das Django-Web-Framework, um ihren Code effizienter zu organisieren und zu schreiben und die Webentwicklungszeit erheblich zu reduzieren.

Warum entscheiden sich Webentwickler für Django?

Es gibt mehrere Web-Frameworks auf dem Markt. Django wurde in der Python-Sprache geschrieben und ist eines von vielen Python-Web-Frameworks. Entwickler bevorzugen jedoch häufig das Django-Web-Framework aus den folgenden Gründen gegenüber anderen.

Entwicklungsgeschwindigkeit

Das Django-Framework ist gut organisiert und einfach zu installieren und zu erlernen, sodass Sie innerhalb weniger Stunden loslegen können. Django-Designer haben das Framework entwickelt, um jede Webarchitektur schnell im Code zu implementieren. Es unterstützt eine schnelle Entwicklung und ein sauberes, pragmatisches Design. Sie können Code in nur wenigen Zeilen schreiben, da Django eine gebrauchsfertige Struktur für verschiedene gängige Webentwicklungsaufgaben bietet, wie zum Beispiel:

  • Benutzerauthentifizierung
  • Content-Verwaltung
  • Sitemaps
  • RSS-Feeds

Kostengünstig

Django ist ein kostenloses Open-Source-Python-Projekt mit einer aktiven Community, die die Software überprüft und verwaltet. Eine gemeinnützige Organisation namens Django Software Foundation fördert und unterstützt die Nutzung und Wartung von Django. Es veranstaltet regelmäßig Meetups, Versammlungen und Community-Veranstaltungen, die andere Entwickler dazu ermutigen, das Django-Projekt zu überprüfen und dazu beizutragen. Das Ergebnis ist ein hochwertiges, funktionsreiches Web-Framework, das kostenlos verwendet werden kann.

Beliebt

Tausende von Open-Source-Projekten und hochkarätigen Websites nutzen Django, wie zum Beispiel:

  • Instagram
  • Mozilla Firefox
  • Pinterest
  • National Geographic

Aufgrund seiner Beliebtheit entwickelt sich das Framework weiter und verfügt über eine starke Support-Infrastruktur. Eine große Anzahl von Einzelpersonen und Unternehmen bietet kostenlosen und kostenpflichtigen Support für alle Entwicklungsherausforderungen, denen Sie bei der Verwendung von Django begegnen könnten.

Wie funktioniert Django?

Jede Webanwendung besteht aus zwei Teilen: Servercode und Client-Code. Der Kunde oder Website-Besucher hat einen Browser. Wenn er eine URL in ihren Browser eingibt, sendet er eine Anfrage an den Webserver-Computer, auf dem die Web-App ausgeführt wird. Der Server verarbeitet die Anfrage mithilfe einer Datenbank und sendet als Antwort Informationen an den Client zurück. Der Client-Code zeigt dem Besucher die Informationen als Website an.

Django verwaltet den Code für dieses Anfrage- und Antwortsystem mithilfe einer Model-View-Template-Architektur (MVT).

Modell

Django-Modelle fungieren als Schnittstelle zwischen der Datenbank und dem Servercode. Sie sind die einzige definitive Informationsquelle über Ihre Daten. Diese Datenmodelle enthalten die wesentlichen Felder und Vorgänge, die Sie für die Interaktion mit Ihrer Datenbank benötigen. Django-Modelle konvertieren also Ihre Datenbanktabellen in Klassen oder Objekte im Python-Code. Dies wird als objektrelationale Zuordnung bezeichnet.

Im Allgemeinen wird jedes Modell einer einzelnen Datenbanktabelle zugeordnet und verfügt über Attribute, die die Datenbankfelder darstellen. Wenn Ihre Website beispielsweise Mitarbeiterdaten enthält, könnte dies wie folgt dargestellt werden:

  • Eine Mitarbeitertabelle mit Mitarbeiternamen und Adressfeldern.
  • Ein Mitarbeitermodell namens Class Employee mit zwei Attributen oder Modellfeldern namens Name und Adresse.

Anzeigen

Django-Ansichten verarbeiten die Anfrage mithilfe der Modelle. Sie können für jede Art von Anfrage, die Ihre Website-Besucher an Ihre Website stellen können, eine Ansichtsfunktion schreiben. Eine View-Funktion kann die Anforderung als Eingabe annehmen und eine Antwort zurückgeben, bei der es sich um einen Fehlercode, ein Bild, eine Datei oder einen beliebigen Datentyp handeln kann.

Django verfügt über eine URL-Mapper- oder URL-Dispatcher-Funktion, die Ihre Ansichtsfunktionen Ihren URLs zuordnet. Sie müssen eine URL-Mapper-Datei erstellen, in die Sie URL-Muster schreiben, wie unten gezeigt.

urlpatterns = [

path('employee/name', views.employee_name),

path('employee/<int:year>/', views.year_archive),

]

Wenn Sie beispielsweise möchten, dass Ihre Website-Besucher eine Liste all Ihrer Mitarbeiter in einem bestimmten Jahr anzeigen, dann richten Sie den URL-Pfad employee/year number ein und schreiben eine entsprechende Django-View-Funktion year_archive. Wenn Ihr Website-Besucher „yourWebsitesame.com/employee/2020“ in seinen Browser eingibt, werden die folgenden Schritte ausgeführt:

  1. Die Anfrage erreicht Ihre Web-App.
  2. Das Django-Web-Framework übernimmt die Jahresnummer und den Namen der View-Funktion aus dem URL-Mapper.
  3. Es führt die View-Funktion year_archive für das Jahr 2020 aus.
  4. Year_Archive verwendet das Mitarbeitermodell, um alle Mitarbeiterdaten aus der Datenbank für 2020 abzurufen.
  5. Das Django-Web-Framework sendet die Daten als Antwort zurück.

Vorlage

Django-Vorlagen verwalten die Websitespräsentation im Browser. Da die meisten Websites in der Hypertext Markup Language (HTML) verfasst sind, können Sie Django-Vorlagencode in einem HTML-ähnlichen Stil schreiben. Eine Vorlagendatei enthält bestimmte Komponenten:

  • Die statischen Teile der endgültigen HTML-Ausgabe, wie Bilder, Schaltflächen und Kopfzeilen.
  • Spezielle Syntax, die beschreibt, wie dynamische Inhalte oder Daten eingefügt werden, die sich bei jeder Anfrage ändern.

Die folgenden Komponenten bilden das Django-Vorlagensystem.

Die Vorlagensprache

Die Vorlagensprache ist die Programmiersprache, die Sie zum Schreiben des HTML-Vorlagencodes verwenden. Django unterstützt seine eigene Django Template Language und eine beliebte Alternative namens Jinja2.

Die Vorlagen-Engine

Die Vorlagen-Engine verarbeitet die Vorlagendatei und erstellt die endgültige HTML-Ausgabe. Es enthält die Daten aus der Antwort in dieser Ausgabe.

Wenn Ihr Website-Besucher beispielsweise Mitarbeiterinformationen anfordert, füllt Ihre Django-Vorlage die angezeigte Website mit Ihrem Website-Header, einer Tabelle, die die Namen und Adressen aller Mitarbeiter enthält, und einer Schaltfläche mit der Aufschrift Weiter.

Welche anderen Module können Sie in Django verwenden?

Obwohl die Model-View-Template-Architektur (MVT) die Grundstruktur jeder Anwendung definiert, verfügt Django über mehrere andere Module, um Ihre Website zu verbessern. Im Folgenden geben wir einige Beispiele.

Formulare

Die meisten Websites benötigen Formulare für Aufgaben wie Registrierung und Zahlung oder zum Sammeln von Informationen vom Website-Besucher. Django bietet viele Tools und Bibliotheken, mit denen Sie Ihre Website-Formulare verwalten können. Es kann die Formularverarbeitung vereinfachen und automatisieren und dies sicherer tun, als wenn Sie den Code selbst schreiben würden.

Django behandelt die Formularverarbeitung auf drei Arten:

  1. Formularerstellung durch Vorbereitung und Restrukturierung von Daten
  2. Formularvalidierung durch Prüfung von HTML-Formularen auf der Clientseite
  3. Formularverarbeitung durch Erhalt der übermittelten Daten

Benutzerauthentifizierung

Moderne Websites müssen Benutzer authentifizieren und autorisieren. Die Authentifizierung überprüft die Identität eines Benutzers, und die Autorisierung entscheidet, was ein authentifizierter Benutzer auf der Site tun kann. Django kann die Authentifizierung für verschiedene Zwecke verwalten.

  • Benutzerkonten
  • Berechtigungen und Ja-oder-Nein-Flags, mit denen Benutzer bestimmte Website-Aufgaben ausführen können
  • Gruppen mehrerer Benutzerkonten mit ähnlichen Berechtigungen
  • Cookie-basierte Benutzersitzungen

Es bietet auch ein konfigurierbares Passwort-Hashing-System und Tools zum Einschränken von Inhalten in Formularen und Ansichten.

Site-Verwaltung

Die Django-Verwaltungsseite macht es einfach, eine Admin-Seite für Ihre Site bereitzustellen. Site-Administratoren können die Seite verwenden, um die Datenmodelle auf Ihrer Site zu erstellen, zu bearbeiten oder anzuzeigen.

Ist Django „opinionated“?

Wir bezeichnen Web-Frameworks informell als „opinionated“, wenn sie einen Prozess für Webentwickler durchsetzen. Sie haben eine Meinung („opinion“) oder einen richtigen Weg, wie Entwickler bestimmte Aufgaben erledigen müssen. Beispielsweise unterstützen „opinionated“ Frameworks in der Regel eine effiziente Entwicklung in bestimmten Branchen, indem sie eine detaillierte Dokumentation für Anwendungsaufgaben im Zusammenhang mit dieser Branche führen.

Auf der anderen Seite haben „unopinionated“ Frameworks weniger Einschränkungen, wie Sie die verschiedenen Model-View-Template-Komponenten (MVT) miteinander integrieren können. Sie sind zwar flexibler, verursachen jedoch Komplikationen bei der Codeorganisation, da verschiedene Entwickler unterschiedliche Ansätze für dieselbe Aufgabe verwenden können.

Django ist etwas „opinionated“. Es bietet eine breite Palette von Komponenten und enthält eine Dokumentation zur Handhabung vieler verschiedener Arten von Webentwicklungsaufgaben. Entwickler können die entkoppelte Architektur von Django verwenden, um aus einer Reihe von Optionen zu wählen, und sie bietet sogar Unterstützung für neue Optionen, die sie benötigen.

Was macht die Sicherheit von Django aus?

Cyberkriminelle greifen häufig auf Web-Apps ab, um auf Benutzeranmeldungen, Finanzdaten und andere sensible Informationen zuzugreifen. Das Django-Web-Framework bietet verschiedene Funktionen zum Schutz Ihrer Web-Apps und Ihrer Benutzer. Sie vermeiden viele häufige Sicherheitsfehler, indem Sie die bewährten Methoden von Django befolgen. Im Folgenden geben wir einige Beispiele.

Cross-Site-Scripting-Schutz

Cross-Site-Scripting (XSS)-Angriffe treten auf, wenn Cyberkriminelle bösartigen Code in die Browser Ihrer Website-Benutzer einfügen. Sie können Ihre Benutzer angreifen, indem sie Ihre Web-App auf verschiedene Arten betrügen, wie zum Beispiel:

  • Speichern bösartiger Skripts in Ihrer Datenbank, damit der Server bei seiner nächsten Antwort versehentlich schädlichen Code sendet.
  • Verleiten Ihrer Benutzer dazu, auf einen Link zu klicken, der dazu führt, dass bösartiger Client-Code anstelle Ihres Codes im Browser des Benutzers ausgeführt wird.

Zum Beispiel könnte die Django-Vorlage {{name}} besitzen, wodurch der Text angezeigt wird, den ein Benutzer in das Namensfeld seines Profils eingibt. Der Cyberkriminelle entführt die Sitzung und ändert den Namen in einen Code wie <script>alert('hello')</script>. Die Vorlage ändert sich in {{<script>alert('hello')</script>}}.

Dieser Code wird jetzt im Browser Ihres Benutzers ausgeführt, sodass die Textnachricht „hello“ auf dem Bildschirm angezeigt wird. Dieses Beispiel ist zwar simpel, aber Sie können sehen, wie ein Cyberkrimineller komplexe Skripts einfügen kann, um den Computer Ihres Benutzers zu steuern.

Django schützt Sie vor solchen Angriffen, indem es bestimmte Zeichen wie < und >, die auf einen schädlichen Code hinweisen, automatisch aus Benutzereingaben entgeht oder ignoriert.

Schutz vor unbefugtem Zugriff

Cross-Site-Request-Forgery-Angriffe (CSRF) treten auf, wenn Hacker die Anmeldeinformationen Ihrer Benutzer stehlen und nicht autorisierte Anfragen an Ihre Web-App senden. Django verfügt über einen integrierten Schutz gegen die meisten Arten von CSRF-Angriffen im Django CSRF-Modul. Es funktioniert, indem jedem Benutzer bei seiner ersten Anmeldung ein geheimer Wert gesendet wird. 

Neue Kundenanfragen beinhalten den geheimen Wert als Beweis dafür, dass der Kunde der ist, für den er sich ausgibt. Da nur der Browser des autorisierten Benutzers den geheimen Wert kennt, kann Django Anfragen automatisch ablehnen, wenn sie von einem anderen Computer stammen, der vorgibt, der Benutzer zu sein. Sie müssen die Einstellung des Django-CSRF-Moduls aktivieren, damit dies funktioniert.

SQL-Injection-Schutz

Cyberkriminelle verwenden SQL-Injections, um mithilfe von HTTP-Anfragen wie POST SQL-Code in Ihre Datenbank einzufügen. Der bösartige Code kann Ihre echten Daten stehlen oder löschen. Django löst dieses Problem im Design selbst. Vom Benutzer gesendete Daten, sogenannte Parameter, werden von der Datenbankabfrage getrennt aufbewahrt, bis sie den Modelllayer erreichen. Das Django-Modell kann dann gefährlichen Zeichen escapen, wenn es den Abfragecode erstellt.

Schutz durch Community-Support

Der Schutz in Django geht über die integrierten Sicherheitsfunktionen hinaus. Da Django Open Source ist, verwenden und überprüfen viele erfahrene Entwickler Django-Module. Gründliche Tests erhöhen die Zuverlässigkeit des Django-Codes und verhindern, dass versehentliche Sicherheitslücken zurückbleiben.

Was macht die Skalierbarkeit von Django aus?

Skalierbarkeit bei der Website-Entwicklung bezieht sich auf die Fähigkeit der Website, mehrere Kundenanfragen gleichzeitig zu bearbeiten. Django-Projekte sind sehr skalierbar und können Tausende von Anfragen bearbeiten. Sie können Ihre Django-Anwendung auf folgende Arten skalieren.

Hardware

Das Django-Team hat das Web-Framework entwickelt, um die Hardware in Ihrem System effizient zu nutzen. Mit einer Shared Nothing-Architektur trennt Django Komponenten wie die Datenbankschicht (die Modelle) und die Anwendungsschicht (die Ansichten). Sie können Hardware auf jeder Ebene hinzufügen, ohne den Rest des Systems zu beeinträchtigen. Sie können Ihrem System weitere Datenbankserver oder Anwendungsserver hinzufügen, und Django wird diese Ressourcen effizient nutzen, um mehrere Besucher zu verwalten.

Caching

Beim Caching werden einige Websitesdaten auf dem Server des Clients oder auf zwischengeschalteten Servern gespeichert, sodass Ihre Django-App Anfragen schneller verarbeiten kann, was den Umfang erhöht. Django bietet ein robustes Caching-System mit verschiedenen Caching-Ebenen:

  1. Sie können Ihre gesamte Website zwischenspeichern.
  2. Sie können bestimmte Ausgaben für Ansichtsfunktionen zwischenspeichern.
  3. Sie können bestimmte Inhalte zwischenspeichern, deren Erstellung zeitaufwändig ist.

Django-Projekte funktionieren auch gut mit Caches von Drittanbietern. Sie können Code schreiben, der Hinweise zu diesen Caches gibt und ihnen mitteilt, welchen Teil Ihrer Anwendung Sie zwischenspeichern möchten.

Wie kann AWS Ihre Django-Webanwendungen unterstützen?

AWS Elastic Beanstalk ist ein benutzerfreundlicher Service zur Bereitstellung und Skalierung von Webanwendungen und Services, die mit Technologien wie Django, Python, Java, .NET, PHP, Node.js, Ruby, Go und Docker auf vertrauten Servern wie Apache, Nginx, Passenger und IIS entwickelt wurden.

Elastic Beanstalk unterstützt Django-Entwickler auf folgende Weise:

  • Sie laden Ihren Django-Code hoch und Elastic Beanstalk übernimmt automatisch die Bereitstellung.
  • Elastic Beanstalk stellt die Infrastruktur bereit, betreibt sie und verwaltet den Anwendungs-Stack (die Plattform), damit Sie weder Zeit aufzuwenden noch Fachwissen zu erwerben brauchen.
  • Elastic Beanstalk skaliert Ihre Anwendung automatisch auf der Grundlage Ihres anwendungsspezifischen Bedarfs mithilfe anzupassender Auto Scaling-Einstellungen.

Beginnen Sie mit der Bereitstellung einer Django-Anwendung in Elastic Beanstalk, indem Sie noch heute ein kostenloses AWS-Konto erstellen.

AWS Django – nächste Schritte

Ein kostenloses Konto erstellen

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS. 

Registrieren 
Beginnen Sie mit der Entwicklung in der Konsole

Beginnen Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmeldung