Django est un framework web écrit en Python Ses principales fonctionnalités sont un développement rapide, une expansion facile, une réutilisabilité élevée, etc. Depuis son premier lancement en 2005, Django est devenu un puissant framework de développement Web.
Au fil du temps, les versions de Django sont constamment mises à jour. Cet article fournira une compréhension approfondie de l'évolution de la version de Django, des changements de 1.x à 3.x, présentera de nouvelles fonctionnalités, améliorations et changements qui nécessitent une attention particulière, et fournira des exemples de code détaillés.
La version Django 1.x est la version initiale de Django, comprenant de la 1.0.1 à la 1.11.29. Dans cette version, Django possède déjà de nombreuses fonctions de base, telles que :
a Utiliser ORM pour les opérations de base de données
ORM est un composant essentiel de Django. Il permet aux développeurs d'utiliser du code Python pour faire fonctionner la base de données sans utiliser directement les instructions SQL. ORM rend les opérations plus faciles et plus intuitives. Un exemple simple :
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()
Dans l'exemple ci-dessus, nous avons défini trois modèles de données, Blog, Author et Entry, qui héritent tous de models.Model. Les attributs de ces classes correspondent aux champs de la table de la base de données. Par exemple, la classe Blog comporte deux champs : name et tagline, qui sont utilisés pour stocker respectivement le nom et le slogan du blog de type chaîne. Lors de la définition du modèle de données, Django générera automatiquement les tables de base de données correspondantes, les opérations d'ajout, de suppression, de modification et de requête, ainsi que l'API ORM.
b. Gérer automatiquement les URL
Dans la version Django 1.x, nous n'avons besoin que d'écrire la fonction d'affichage pour gérer les requêtes HTTP, et nous n'avons pas besoin de gérer manuellement les URL nous-mêmes. Django mappera automatiquement la requête à la fonction d'affichage correspondante en fonction du routage URL configuré. Par exemple :
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'), ]
Dans l'exemple ci-dessus, nous avons défini quatre routes d'URL, dont la page d'accueil, la page de détails des questions, la page des résultats du vote et la page des fonctions de vote. Pour chaque route URL, nous précisons la fonction de traitement correspondante. Django fera automatiquement correspondre l'URL demandée avec l'itinéraire, réalisant ainsi la fonction de gestion automatique des URL.
c. Système de gestion des arrière-plans d'administration intégré
Le système de gestion des arrière-plans d'administration de Django est une fonction très puissante. Grâce à ce système de gestion d'arrière-plan, nous pouvons facilement ajouter, supprimer, modifier et vérifier la base de données. Le système de gestion d'arrière-plan d'administration de Django 1.x possède déjà de nombreuses fonctions de base, telles que la génération automatique de sites d'administration, la gestion de modèles de données, l'affichage de listes personnalisées, de filtres et de formulaires, etc.
La version Django 2.x comprend de 2.0.0 à 2.2.24, qui apporte des améliorations majeures à Django.
a. Présentation d'ASGI
Dans la version Django 2.x, le protocole ASGI (Asynchronous Server Gateway Interface) a été introduit. ASGI est un protocole conçu pour les serveurs Web asynchrones, qui permet aux développeurs d'écrire des applications Web asynchrones. De cette façon, nous pouvons mieux répondre aux besoins de programmation asynchrone, tels que les websockets, la communication en temps réel, les tâches chronophages, etc.
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!', })
L'exemple de code ci-dessus utilise ASGI pour écrire une application Web simple. Tout d’abord, définissez une fonction asynchrone d’application, qui accepte trois paramètres : portée, réception et envoi. Ces paramètres sont fixes et convenus par le protocole ASGI. Parmi eux, la portée représente le contexte de la demande, y compris le type de demande, le chemin, la chaîne de requête, etc. ; la réception représente la méthode de réception de la demande, la construction d'un dictionnaire pour représenter l'en-tête de la demande, le code de réponse, l'envoi, etc. ; renvoyer une réponse au client.
b. Compatibilité Python 2.x supprimée
Dans la version Django 2.x, la compatibilité Python 2.x a été supprimée et la version Python 2.x des bibliothèques tierces n'est plus prise en charge. Cela signifie que les développeurs doivent utiliser Python 3.x pour développer des applications Django.
De plus, la version Django 2.x comporte également d'autres améliorations et optimisations, telles que :
La version Django 3.x est la dernière version actuellement, comprenant de la 3.0.0 à la 3.2.5. Il améliore encore ses fonctionnalités et ses performances sur la base de la version 2.x.
a. Prise en charge des paramètres de chemin
Dans la version Django 3.x, les convertisseurs de chemin, c'est-à-dire la prise en charge des paramètres de chemin, ont été introduits. Cette nouvelle fonctionnalité est très utile pour développer des API RESTful et peut fournir une méthode de correspondance plus flexible pour les URL.
from django.urls import path def greet(request, name): return HttpResponse(f'Hello, {name}!') urlpatterns = [ path('greet/<name>/', greet), ... ]
Dans l'exemple ci-dessus, nous avons défini un nom de paramètre de chemin. N'importe quelle valeur dans le chemin de la requête peut être renseignée dans le paramètre name et représentée comme telle lors du traitement de la vue.
b. Remplacement d'UnicodeSlugify
Dans la version Django 3.x, UnicodeSlugify n'est plus utilisé pour remplacer son Slugify par défaut. UnicodeSlugify est une bibliothèque tierce qui permet aux développeurs de travailler avec davantage de langues et de jeux de caractères. Au lieu d'UnicodeSlugify, un nouvel algorithme Slugify a été conçu pour Django, plus standardisé, plus localisé, plus complet, plus évolutif et plus sécurisé.
c. Optimiser la requête de base de données
Dans la version Django 3.x, la méthode de requête de base de données est encore optimisée. Par exemple, au démarrage de l'application, Django met en cache les métadonnées de toutes les requêtes de base de données. Cela peut réduire le nombre de recherches dans la structure des tables et améliorer la vitesse de réponse de l'application.
De plus, la version Django 3.x ajoute également de nombreuses autres nouvelles fonctionnalités et améliorations, telles que :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!