Mise à jour de 'source/part-3-django-concepts/views.adoc'
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Fred 2021-08-18 11:03:23 +02:00
parent 3aae64ad54
commit 81f1a546ab
1 changed files with 28 additions and 2 deletions

View File

@ -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