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