Django ist ein in Python geschriebenes Web-Framework. Seine Hauptmerkmale sind schnelle Entwicklung, einfache Erweiterung, hohe Wiederverwendbarkeit usw. Seit seiner ersten Einführung im Jahr 2005 hat sich Django zu einem leistungsstarken Webentwicklungs-Framework entwickelt.
Mit der Zeit werden die Django-Versionen ständig aktualisiert. Dieser Artikel bietet ein detailliertes Verständnis der Django-Versionsentwicklung, der Änderungen von 1.x auf 3.x, stellt neue Funktionen, Verbesserungen und Änderungen vor, die Aufmerksamkeit erfordern, und liefert detaillierte Codebeispiele.
Django 1.x-Version ist die erste Version von Django, einschließlich von 1.0.1 bis 1.11.29. In dieser Version verfügt Django bereits über viele Grundfunktionen, wie zum Beispiel:
a Verwendung von ORM für Datenbankoperationen
ORM ist eine Kernkomponente von Django. Es ermöglicht Entwicklern, Python-Code zum Betreiben der Datenbank zu verwenden, ohne direkt SQL-Anweisungen zu verwenden. ORM macht den Betrieb einfacher und intuitiver. Ein einfaches Beispiel:
from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField() class Entry(models.Model): blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateTimeField() mod_date = models.DateTimeField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField()
Im obigen Beispiel haben wir drei Datenmodelle definiert: Blog, Autor und Eintrag, die alle von models.Model erben. Die Attribute dieser Klassen entsprechen den Feldern in der Datenbanktabelle. Die Blog-Klasse verfügt beispielsweise über zwei Felder: Name und Slogan, die zum Speichern des Blognamens bzw. des Slogans vom Typ String verwendet werden. Während der Definition des Datenmodells generiert Django automatisch die entsprechenden Datenbanktabellen, fügt Vorgänge hinzu, löscht sie, ändert sie und fragt sie ab sowie die ORM-API.
b. URLs automatisch verwalten
In der Django 1.x-Version müssen wir nur die Ansichtsfunktion schreiben, um HTTP-Anfragen zu verarbeiten, und müssen URLs nicht selbst manuell verwalten. Django ordnet die Anfrage basierend auf dem konfigurierten URL-Routing automatisch der entsprechenden Ansichtsfunktion zu. Zum Beispiel:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'), url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'), url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'), ]
Im obigen Beispiel haben wir vier URL-Routen definiert, darunter die Startseite, die Seite mit den Fragendetails, die Seite mit den Abstimmungsergebnissen und die Seite mit den Abstimmungsfunktionen. Für jede URL-Route geben wir die entsprechende Verarbeitungsfunktion an. Django ordnet die angeforderte URL automatisch der Route zu und realisiert so die Funktion der automatischen Verwaltung von URLs.
c. Integriertes Admin-Hintergrundverwaltungssystem
Djangos Admin-Hintergrundverwaltungssystem ist eine sehr leistungsstarke Funktion. Über dieses Hintergrundverwaltungssystem können wir die Datenbank einfach hinzufügen, löschen, ändern und überprüfen. Das Admin-Hintergrundverwaltungssystem in der Django 1.x-Version verfügt bereits über viele Grundfunktionen, wie z. B. die automatische Generierung von Admin-Sites, die Verwaltung von Datenmodellen, die Anzeige benutzerdefinierter Listen, Filter und Formulare usw.
Django 2.x-Version umfasst 2.0.0 bis 2.2.24, was einige wesentliche Verbesserungen für Django mit sich bringt.
a. Einführung von ASGI
In der Django 2.x-Version wurde das ASGI-Protokoll (Asynchronous Server Gateway Interface) eingeführt. ASGI ist ein für asynchrone Webserver entwickeltes Protokoll, das es Entwicklern ermöglicht, asynchrone Webanwendungen zu schreiben. Auf diese Weise können wir die Anforderungen der asynchronen Programmierung wie Websockets, Echtzeitkommunikation, zeitaufwändige Aufgaben usw. besser erfüllen.
async def application(scope, receive, send): assert scope['type'] == 'http' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ] }) await send({ 'type': 'http.response.body', 'body': b'Hello, world!', })
Das obige Codebeispiel verwendet ASGI, um eine einfache Webanwendung zu schreiben. Definieren Sie zunächst eine asynchrone Anwendungsfunktion, die drei Parameter akzeptiert: Bereich, Empfang und Senden. Diese Parameter werden durch das ASGI-Protokoll festgelegt und vereinbart. Unter diesen stellt der Bereich den Kontext der Anforderung dar, einschließlich des Anforderungstyps, des Pfads, der Abfragezeichenfolge usw.; „Empfangen“ stellt die Methode zum Empfangen der Anforderung dar und stellt ein Wörterbuch zur Darstellung des Anforderungsheaders, des Antwortcodes usw. dar eine Antwort an den Kunden zurücksenden.
b. Python 2.x-Kompatibilität entfernt
In der Django 2.x-Version wurde die Python 2.x-Kompatibilität entfernt und Python 2.x-Versionen von Drittanbieterbibliotheken werden nicht mehr unterstützt. Dies bedeutet, dass Entwickler Python 3.x verwenden müssen, um Django-Anwendungen zu entwickeln.
Darüber hinaus verfügt die Django 2.x-Version über einige weitere Verbesserungen und Optimierungen, wie zum Beispiel:
Django 3.x-Version ist derzeit die neueste Version, einschließlich von 3.0.0 bis 3.2.5. Es verbessert seine Funktionalität und Leistung basierend auf Version 2.x weiter.
a. Unterstützung von Pfadparametern
In der Django 3.x-Version wurden Pfadkonverter, also die Unterstützung von Pfadparametern, eingeführt. Diese neue Funktion ist sehr nützlich für die Entwicklung von RESTful-APIs und kann eine flexiblere Matching-Methode für URLs bieten.
from django.urls import path def greet(request, name): return HttpResponse(f'Hello, {name}!') urlpatterns = [ path('greet/<name>/', greet), ... ]
Im obigen Beispiel haben wir einen Pfadparameternamen definiert. Jeder Wert im Anforderungspfad kann in den Namensparameter eingefügt und bei der Verarbeitung der Ansicht als solcher dargestellt werden.
b. Ersatz von UnicodeSlugify
In der Django 3.x-Version wird UnicodeSlugify nicht mehr als Ersatz für das Standard-Slugify verwendet. UnicodeSlugify ist eine Bibliothek eines Drittanbieters, die es Entwicklern ermöglicht, mit mehr Sprachen und Zeichensätzen zu arbeiten. Anstelle von UnicodeSlugify wurde für Django ein neuer Slugify-Algorithmus entwickelt, der standardisierter, lokalisierter, umfassender, skalierbarer und sicherer ist.
c. Datenbankabfrage optimieren
In der Django 3.x-Version wurde die Datenbankabfragemethode weiter optimiert. Wenn beispielsweise die Anwendung gestartet wird, speichert Django die Metadaten für alle Datenbankabfragen zwischen. Dies kann die Anzahl der Nachschlagevorgänge in der Tabellenstruktur reduzieren und die Reaktionsgeschwindigkeit der Anwendung verbessern.
Darüber hinaus bietet die Django 3.x-Version viele weitere neue Funktionen und Verbesserungen, wie zum Beispiel:
Dieser Artikel erläutert kurz die Änderungen in der Entwicklung von Django 1.x zu Django 3.x. Diese Änderungen führen zu einer besseren Leistung, einer besseren Entwicklungseffizienz und einer besseren Benutzerfreundlichkeit. Ich glaube, dass Django als MVC-Framework immer perfekter werden wird.
Das obige ist der detaillierte Inhalt vonWeiterentwicklung der Django-Version: Erfahren Sie mehr über neue Funktionen und Verbesserungen von 1.x auf 3.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!