From 81f1a546ab743bde6b91ad52dc49e0aa7845ab7f Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 18 Aug 2021 11:03:23 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'source/part-3-djan?= =?UTF-8?q?go-concepts/views.adoc'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/part-3-django-concepts/views.adoc | 30 ++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/source/part-3-django-concepts/views.adoc b/source/part-3-django-concepts/views.adoc index 19bc13e..43b2374 100644 --- a/source/part-3-django-concepts/views.adoc +++ b/source/part-3-django-concepts/views.adoc @@ -1,8 +1,34 @@ == Vues -Une vue correspond à un contrôleur dans le pattern MVC. Tout ce que vous pourrez définir au niveau du fichier `views.py` fera le lien entre le modèle stocké dans la base de données et ce avec quoi l'utilisateur pourra réellement interagir (le `template`). +Une vue correspond à un contrôleur dans le pattern MVC. +Tout ce que vous pourrez définir au niveau du fichier `views.py` fera le lien entre le modèle stocké dans la base de données +et ce avec quoi l'utilisateur pourra réellement interagir (le `template`). -Chaque vue peut etre représentée de deux manières: soit par des fonctions, soit par des classes. Le comportement leur est propre, mais le résultat reste identique. Le lien entre l'URL à laquelle l'utilisateur accède et son exécution est faite au travers du fichier `gwift/urls.py`, comme on le verra par la suite. +De manière très basique, une vue consiste en un objet Python dont le retour sera une instance de type `HttpResponse: + +[source,python] +---- +from django.http import HttpResponse + +def home(request): + return HttpResponse("Hello, World!") +---- + +Techniquement, une vue pourrait retourner autre chose qu'une réponse Http, mais cela bloquera au niveau des middlewares, +qui s'attendent tous à traiter un objet de ce type-là. +Les APIs de type REST, SOAP ou GraphQL ne font finalement qu'une chose: encapsuler leur résultat dans un objet de type HttpResponse. + +Le paramètre `request` est lui de type `HttpRequest` et embarque https://docs.djangoproject.com/en/stable/ref/request-response/#django.http.HttpRequest[énormément d'informations], +dont le schéma, les cookies, les verbes http, + +NOTE: détailler les informations de l'objet request :-p + +Chaque vue peut etre représentée de deux manières: + +1. Soit par des fonctions, +2. Soit par des classes. + +Le comportement leur est propre, mais le résultat reste identique. Le lien entre l'URL à laquelle l'utilisateur accède et son exécution est faite au travers du fichier `gwift/urls.py`, comme on le verra par la suite. === Function Based Views