Une petite curiosité sur les fonctions de vue de Django et ses principes cachés
Les développeurs écrivent souvent du code par habitude. Moi aussi, lorsque j'écrivais des fonctions de vue dans Django, j'utilisais sans hésitation request.GET.get('variable')
ou request.POST.get('variable')
. Mais un jour, j'ai eu cette question en tête.
"Comment cela fonctionne-t-il vraiment?"
Le traitement des requêtes dans Django : les secrets de request.GET
et request.POST
Pour répondre à cette question, j'ai examiné le fonctionnement de Django. Pour faire court, request.GET
et request.POST
sont des propriétés des objets de requêtes HTTP qui rendent les données envoyées par le client faciles à gérer.
Django analyse les données envoyées par le client vers le serveur et les transforme en une forme qui peut être traitée comme un dictionnaire. C'est pourquoi nous pouvons facilement récupérer les données souhaitées avec request.GET.get('variable')
ou request.POST.get('variable')
.
Cependant, il est important de noter que cet objet n'est pas un vrai dictionnaire. Que signifie donc l'expression comme un dictionnaire?
QueryDict : un objet comme un dictionnaire, mais plus que ça
Dans Django, request.GET
et request.POST
sont en réalité des instances de la classe QueryDict
. Cette classe offre un comportement similaire à celui d'un dictionnaire ordinaire, mais avec quelques différences importantes :
1. Stockage de plusieurs valeurs pour la même clé
Un dictionnaire ordinaire ne peut stocker qu'une seule valeur par clé, tandis que QueryDict
peut stocker plusieurs valeurs pour la même clé.
Par exemple, avec une chaîne de requête comme ?key=value1&key=value2
:
request.GET.get('key') # 'value1' (première valeur)
request.GET.getlist('key') # ['value1', 'value2'] (toutes les valeurs)
2. Immutabilité
Par défaut, QueryDict
est immuable. Pour modifier ou ajouter des valeurs, il faut d'abord créer une copie :
mutable_querydict = request.GET.copy()
mutable_querydict['new_key'] = 'new_value'
3. Fonctionnalités au-delà d'un dictionnaire
Des méthodes comme getlist()
ne sont pas présentes dans un dictionnaire ordinaire, mais font partie des puissantes fonctionnalités offertes par QueryDict
.

Pourquoi cette conception?
La raison de cette conception est simple. Les applications web ont souvent besoin de traiter plusieurs données avec le même nom, et maintenir l'immuabilité garantit l'intégrité des données. QueryDict
répond à cette nécessité tout en offrant aux développeurs une API de style dictionnaire familière. Les utilisateurs peuvent ainsi traiter des données complexes de requêtes HTTP comme s'ils manipulaient simplement un dictionnaire.
Le plaisir d'explorer les principes de Django
C'était une petite curiosité qui a conduit à une admiration pour la conception minutieuse et efficace de Django au fur et à mesure que je trouvais des réponses.
Découvrir l'existence du QueryDict
et ses fonctionnalités particulières a été une confirmation de la convivialité de Django pour les développeurs.
Essayez vous aussi d'explorer les petites curiosités qui vous viennent à l'esprit en utilisant Django. Il y a sans aucun doute de nouvelles découvertes et des émotions qui vous attendent.
Amusez-vous à coder tout en explorant le fonctionnement de Django! 🎉
Add a New Comment