Django (Web-Framework) – Wikipedia

before-content-x4

Python-Webframework

Django (( JANG-goh;; manchmal stilisiert als Django)[8] ist ein Python-basiertes freies Open-Source-Webframework, das dem MTV-Architekturmuster (Model Template Views) folgt.[9][10] Es wird von der Django Software Foundation (DSF) unterhalten, einer unabhängigen amerikanischen Organisation, die als gemeinnützige Organisation gemäß 501 (c) (3) gegründet wurde.

Das Hauptziel von Django ist es, die Erstellung komplexer, datenbankgesteuerter Websites zu vereinfachen. Das Framework betont die Wiederverwendbarkeit und “Steckbarkeit” von Komponenten, weniger Code, geringe Kopplung, schnelle Entwicklung und das Prinzip, sich nicht zu wiederholen.[11] Python wird durchgehend verwendet, auch für Einstellungen, Dateien und Datenmodelle. Django bietet außerdem eine optionale administrative Schnittstelle zum Erstellen, Lesen, Aktualisieren und Löschen, die dynamisch durch Introspektion generiert und über Administrationsmodelle konfiguriert wird.

Einige bekannte Websites, die Django verwenden, umfassen PBS,[12]Instagram,[13]Mozilla,[14]Die Washington Times,[15]Disqus,[16]Bit Bucket,[17] und nebenan.[18]

Geschichte[edit]

Django wurde im Herbst 2003 gegründet, als die Webprogrammierer am Lawrence Journal-Welt Die Zeitungen Adrian Holovaty und Simon Willison begannen, Python zum Erstellen von Anwendungen zu verwenden. Jacob Kaplan-Moss wurde früh in Djangos Entwicklung eingestellt, kurz bevor Simon Willisons Praktikum endete.[19] Es wurde im Juli 2005 unter einer BSD-Lizenz veröffentlicht. Das Framework wurde nach dem Gitarristen Django Reinhardt benannt.[20]

Im Juni 2008 wurde bekannt gegeben, dass eine neu gegründete Django Software Foundation (DSF) Django in Zukunft beibehalten wird.[21]

Eigenschaften[edit]

Komponenten[edit]

Screenshot der Django-Administrationsoberfläche zum Ändern eines Benutzerkontos.

Trotz einer eigenen Nomenklatur, z. B. der Benennung der aufrufbaren Objekte, die die HTTP-Antworten generieren, “Ansichten”,[9] Das Kern-Django-Framework kann als MVC-Architektur angesehen werden.[10] Es besteht aus einem objektrelationalen Mapper (ORM), der zwischen Datenmodellen (definiert als Python-Klassen) und einer relationalen Datenbank (“M.odel “), ein System zur Verarbeitung von HTTP-Anfragen mit einem Web-Template-System (“V.iew “) und ein URL-Dispatcher auf Basis regulärer Ausdrücke (“C.ontroller “).

Ebenfalls im Kernframework enthalten sind:

  • Ein leichter und eigenständiger Webserver zum Entwickeln und Testen
  • Ein Formularserialisierungs- und -validierungssystem, das zwischen HTML-Formularen und Werten übersetzen kann, die für die Speicherung in der Datenbank geeignet sind
  • Ein Vorlagensystem, das das Konzept der Vererbung aus der objektorientierten Programmierung verwendet
  • Ein Caching-Framework, das eine von mehreren Cache-Methoden verwenden kann
  • Unterstützung für Middleware-Klassen, die in verschiedenen Phasen der Anforderungsverarbeitung eingreifen und benutzerdefinierte Funktionen ausführen können
  • Ein internes Dispatchersystem, mit dem Komponenten einer Anwendung Ereignisse über vordefinierte Signale miteinander kommunizieren können
  • ein Internationalisierungssystem, das Übersetzungen von Djangos eigenen Komponenten in eine Vielzahl von Sprachen umfasst
  • Ein Serialisierungssystem, das XML- und / oder JSON-Darstellungen von Django-Modellinstanzen erstellen und lesen kann
  • ein System zur Erweiterung der Funktionen der Template-Engine
  • eine Schnittstelle zu Pythons integriertem Unit-Test-Framework

Gebündelte Anwendungen[edit]

Die Hauptdistribution von Django bündelt auch eine Reihe von Anwendungen in ihrem “Contrib” -Paket, darunter:

Erweiterbarkeit[edit]

Das Konfigurationssystem von Django ermöglicht das Einfügen von Code von Drittanbietern in ein reguläres Projekt, sofern dieser der wiederverwendbaren App folgt[24] Konventionen. Mehr als 2500 Pakete[25] stehen zur Verfügung, um das ursprüngliche Verhalten des Frameworks zu erweitern und Lösungen für Probleme bereitzustellen, die das ursprüngliche Tool nicht gelöst hat: Registrierung, Suche, API-Bereitstellung und -Verbrauch, CMS usw.

Diese Erweiterbarkeit wird jedoch durch die Abhängigkeiten der internen Komponenten verringert. Während die Django-Philosophie eine lose Kopplung impliziert,[26] Die Vorlagenfilter und Tags setzen eine Engine-Implementierung voraus, und sowohl die mit auth als auch admin gebündelten Anwendungen erfordern die Verwendung des internen ORM. Keiner dieser Filter oder gebündelten Apps ist für die Ausführung eines Django-Projekts obligatorisch, aber wiederverwendbare Apps hängen in der Regel von ihnen ab. Dies ermutigt Entwickler, den offiziellen Stack weiterhin zu verwenden, um das Apps-Ökosystem voll nutzen zu können.

Serveranordnungen[edit]

Django kann in Verbindung mit Apache, Nginx mit WSGI, Gunicorn oder Cherokee mit flup (einem Python-Modul) ausgeführt werden.[27][28] Django bietet auch die Möglichkeit, einen FastCGI-Server zu starten, der die Verwendung hinter jedem Webserver ermöglicht, der FastCGI unterstützt, wie z. B. Lighttpd oder Hiawatha. Es ist auch möglich, andere WSGI-kompatible Webserver zu verwenden.[29] Django unterstützt offiziell fünf Datenbank-Backends: PostgreSQL, MySQL, MariaDB, SQLite und Oracle. Microsoft SQL Server kann mit django-mssql unter Microsoft-Betriebssystemen verwendet werden.[30] Während für IBM Db2 ähnlich externe Backends existieren,[31]SQL überall[32] und Firebird.[33] Es gibt eine Abzweigung namens django-nonrel, die NoSQL-Datenbanken wie MongoDB und den Datenspeicher von Google App Engine unterstützt.[34]

Django kann auch in Verbindung mit Jython auf jedem Java EE-Anwendungsserver wie GlassFish oder JBoss ausgeführt werden. In diesem Fall muss django-jython installiert werden, um JDBC-Treiber für die Datenbankkonnektivität bereitzustellen, die auch Funktionen zum Kompilieren von Django in eine für die Bereitstellung geeignete .war-Datei bereitstellen können.[35]

Google App Engine unterstützt Django Version 1.xx.[36] als eines der gebündelten Frameworks.

Versionsgeschichte[edit]

Das Django-Team bestimmt gelegentlich bestimmte Releases als LTS-Releases (Long Term Support).[37] Bei LTS-Versionen werden Sicherheits- und Datenverlustkorrekturen für einen garantierten Zeitraum angewendet, in der Regel mehr als 3 Jahre, unabhängig von der Geschwindigkeit der nachfolgenden Versionen.

Ausführung Datum[38] Anmerkungen[39]
Alte Version, nicht mehr gepflegt: 0,90[40] 16. November 2005
Alte Version, nicht mehr gepflegt: 0,91[41] 11. Januar 2006 “new-admin”
Alte Version, nicht mehr gepflegt: 0,95[42] 29. Juli 2006 “magische Entfernung”
Alte Version, nicht mehr gepflegt: 0,96[43] 23. März 2007 “newforms”, Testwerkzeuge
Alte Version, nicht mehr gepflegt: 1.0[44] 3. September 2008 API-Stabilität, entkoppelter Admin, Unicode
Alte Version, nicht mehr gepflegt: 1.1[45] 29. Juli 2009 Aggregate, transaktionsbasierte Tests
Alte Version, nicht mehr gepflegt: 1.2[46] 17. Mai 2010 Mehrere Datenbankverbindungen, CSRF, Modellvalidierung
Alte Version, nicht mehr gepflegt: 1.3[47] 23. März 2011 Klassenbasierte Ansichten, statische Dateien
Alte Version, nicht mehr gepflegt: 1.4 LTS[48] 23. März 2012 Zeitzonen, beim Testen von Browsern, App-Vorlagen.
Alte Version, nicht mehr gepflegt: 1.5[49] 26. Februar 2013 Python 3-Unterstützung, konfigurierbares Benutzermodell
Alte Version, nicht mehr gepflegt: 1.6[50] 6. November 2013 Malcolm Tredinnick gewidmet, Datenbank-Transaktionsmanagement, Verbindungspooling.
Alte Version, nicht mehr gepflegt: 1.7[51] 2. September 2014 Migrationen, Laden und Konfigurieren von Anwendungen.
Alte Version, nicht mehr gepflegt: 1,8 LTS[52] 1. April 2015 Native Unterstützung für mehrere Template-Engines. Die Unterstützung endete am 1. April 2018
Alte Version, nicht mehr gepflegt: 1.9[53] 1. Dezember 2015 Automatische Passwortüberprüfung. Neues Styling für die Admin-Oberfläche.
Alte Version, nicht mehr gepflegt: 1.10[54] 1. August 2016 Volltextsuche nach PostgreSQL. Neue Middleware.
Alte Version, nicht mehr gepflegt: 1,11 LTS[55] 4. April 2017 Letzte Version zur Unterstützung von Python 2.7. Die Unterstützung endete am 1. April 2020
Alte Version, nicht mehr gepflegt: 2.0[56] 2. Dezember 2017 Erste Version nur für Python 3, vereinfachte URL-Routing-Syntax, mobilfreundlicher Administrator.
Alte Version, nicht mehr gepflegt: 2.1[57] 1. August 2018 Modell “Ansicht” Berechtigung.
Ältere Version, aber immer noch gepflegt: 2.2 LTS[58] 1. April 2019 Sicherheitsfreigabe. Unterstützt bis mindestens April 2022
Ältere Version, aber immer noch gepflegt: 3.0[59] 2. Dezember 2019 ASGI-Unterstützung
Aktuelle stabile Version: 3.1[60] 4. August 2020 Asynchrone Ansichten und Middleware
Zukünftige Version: 3.2 LTS[61] April 2021 Erweiterte Unterstützung bis mindestens April 2024
Zukünftige Version: 4.0[61] Dezember 2021 Erweiterte Unterstützung bis mindestens April 2023
Zukünftige Version: 4.1[61] August 2022 Erweiterte Unterstützung bis mindestens Dezember 2023
Zukünftige Version: 4.2 LTS[61] April 2023 Erweiterte Unterstützung bis mindestens April 2026
Zukünftige Version: 5.0[61] Dezember 2023 Erweiterte Unterstützung bis mindestens April 2025

Legende:

Alte Version

Ältere Version, noch gepflegt

Letzte Version

Neueste Vorschau-Version

Zukünftige Version

Entwicklungswerkzeuge mit Django-Unterstützung[edit]

Für die Entwicklung eines Django-Projekts sind keine speziellen Tools erforderlich, da der Quellcode mit jedem herkömmlichen Texteditor bearbeitet werden kann. Auf Computerprogrammierung spezialisierte Redakteure können jedoch dazu beitragen, die Produktivität der Entwicklung zu steigern, z. B. durch Funktionen wie das Hervorheben der Syntax. Da Django in Python geschrieben ist, sind Texteditoren, die die Python-Syntax kennen, in dieser Hinsicht von Vorteil.

Integrierte Entwicklungsumgebungen (IDE) bieten weitere Funktionen wie Debugging, Refactoring und Unit-Tests. Wie bei einfachen Editoren können IDEs mit Unterstützung für Python von Vorteil sein. Einige auf Python spezialisierte IDEs bieten zusätzlich integrierte Unterstützung für Django-Projekte, sodass die Verwendung einer solchen IDE bei der Entwicklung eines Django-Projekts zur weiteren Steigerung der Produktivität beitragen kann. Einen Vergleich solcher Python-IDEs finden Sie im Hauptartikel:

Es gibt eine halbjährliche Konferenz für Django-Entwickler und -Nutzer mit dem Namen “DjangoCon”, die seit September 2008 stattfindet. Die DjangoCon findet jährlich in Europa im Mai oder Juni statt.[62] während eine andere im August oder September in den Vereinigten Staaten in verschiedenen Städten stattfindet.[63] Die DjangoCon 2012 fand vom 3. bis 8. September in Washington DC statt. 2013 fand die DjangoCon in Chicago im Hyatt Regency Hotel statt und die Sprints nach der Konferenz wurden im Computer Boot Center Digital Bootcamp veranstaltet.[64] Die DjangoCon US 2014 kehrte vom 30. August bis 6. September nach Portland, OR, zurück. Die DjangoCon US 2015 fand vom 6. bis 11. September in Austin, TX, im AT & T Executive Center statt. Die DjangoCon US 2016 fand vom 17. bis 22. Juli in Philadelphia, PA, an der Wharton School der University of Pennsylvania statt.[65]Die DjangoCon US 2017 fand in Spokane, WA, statt.[66] 2018 fand die DjangoCon US in San Diego, CA, statt.[67] Die DjangoCon US 2019 fand vom 22. bis 27. September erneut in San Diego, Kalifornien, statt.

Django-Minikonferenzen finden normalerweise jedes Jahr im Rahmen der australischen Python-Konferenz ‘PyCon AU’ statt.[68] Zuvor fanden diese Minikonferenzen statt in:

  • Hobart, Australien, im Juli 2013,
  • Brisbane, Australien, im August 2014 und 2015,
  • Melbourne, Australien im August 2016 und 2017 und
  • Sydney, Australien, im August 2018 und 2019.

Django hat Benutzergruppen und Meetups auf der ganzen Welt hervorgebracht.[69] Die bemerkenswerteste Gruppe ist die Django Girls Organisation, die in Polen gegründet wurde, jetzt aber Veranstaltungen in 91 Ländern hatte.[70][71]

Ports zu anderen Sprachen[edit]

Programmierer haben das Design der Template-Engine von Django von Python auf andere Sprachen portiert und bieten eine angemessene plattformübergreifende Unterstützung. Einige dieser Optionen sind direktere Ports. andere, obwohl sie von Django inspiriert sind und ihre Konzepte beibehalten, nehmen sich die Freiheit, von Djangos Design abzuweichen:

CMS basieren auf Django Framework[edit]

Django als Framework kann ein CMS erstellen. Es gibt jedoch bereits einige CMS, die auf Django basieren. Nachfolgend finden Sie eine Liste einiger CMS, die auf dem Django-Framework basieren:

Siehe auch[edit]

Verweise[edit]

Literaturverzeichnis[edit]

  • Jaiswal, Sanjeev; Kumar, Ratan (22. Juni 2015), Lernen der Django-Webentwicklung (1. Aufl.), Packt, p. 405, ISBN 1783984406
  • Ravindrun, Arun (31. März 2015), Django Design Patterns und Best Practices (1. Aufl.), Packt, p. 180, ISBN 1783986646
  • Osborn, Tracy (Mai 2015), Hallo Web App (1. Aufl.), Tracy Osborn, p. 142, ISBN 0986365912
  • Bendoraitis, Aidas (Oktober 2014), Webentwicklung mit Django Cookbook (1. Aufl.), Packt, p. 294, ISBN 178328689X
  • Baumgartner, Peter; Malet, Yann (2015), Hochleistungs-Django (1. Aufl.), Lincoln Loop, p. 184, ISBN 1508748128
  • Elman, Julia; Lavin, Mark (2014), Leichter Django (1. Aufl.), O’Reilly Media, p. 246, ISBN 149194594X
  • Percival, Harry (2014), Testgetriebene Entwicklung mit Python (1. Aufl.), O’Reilly Media, p. 480, ISBN 1449364829

Diese Liste ist eine Extraktion aus Aktuelle Django Bücher

Externe Links[edit]


after-content-x4