- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Si vous explorez la documentation concernant les vues fondées sur les classes,vous allez tomber sur ce terme de mixin.Donc en fait, quand on a des vues fondées sur les classes,on a une association d'une vue avec ce qu'on appelle ses mixins.
00:00:12 :Les mixins, il en existe plein et c'est un peu comme des poupées russes si vous voulez.Ça se base entièrement sur la programmation orientée objet,donc si vous êtes à l'aise avec la programmation orientée objet,vous allez assez rapidement comprendre ce que je vais vous montrer dans cette vidéo
00:00:25 :et si ce n'est pas le cas, vous risquez d'être un petit peu perdus.Donc là, on a dans la documentation de Django,la partie sur l'utilisation des mixins avec les vues fondées sur les classes.
00:00:34 :Et cette partie explique assez bien l'utilité d'avoir tout séparé de cette façon.Donc là encore, l'objectif, c'est de nous donner le plus de flexibilité possible.
00:00:42 :Donc comme ça l'indique ici, en fait, les vues fondées sur les classes,elles fournissent de nombreuses fonctionnalités,mais certaines d'entre elles peuvent être utilisées de manière indépendante.
00:00:50 :Et donc des fois, en fait, on peut avoir envie d'utiliser directement le template response,mais on se retrouverait avec pas mal de codes dupliquéssi on utilise tout ce qui est disponible de base avec le template view ou le template response.
00:01:02 :Donc pour ça, en fait, on nous donne à disposition un template response mixinque l'on peut utiliser indépendamment d'autres mixinset mélanger un peu tout ça, si vous voulez, pour avoir juste les fonctionnalités que l'on souhaite.
00:01:15 :Si on va voir dans la documentation, vous allez voir qu'il y a plein de mixins qui existent.Par exemple, le context mixin va nous permettre de récupérer les informations du contexteavec notamment cette méthode que l'on utilise très souvent dans les vues fondées sur les classesqui nous permet de récupérer le contexte et éventuellement de le modifier.
00:01:31 :Donc si vous, ce qui vous intéresse, c'est d'avoir accès au contexte,et bien vous allez pouvoir créer une classe qui hérite de ce contexte mixin.
00:01:37 :Si on va voir un peu ce que ça donne dans le code,ici j'ai une classe HomeView qui hérite de TemplateView.Et si on va voir à quoi correspond TemplateView,donc en faisant un clic droit et en allant dans GoToDeclarationOrUsage ici,on voit que ce TemplateView est également construit lui-même,
00:01:53 :donc à partir de deux mixins dans ce cas-ci, et de la vue.Donc vous verrez que la vue est toujours en dernier,et on a un ou plusieurs mixins qui sont mis dans la chaîne d'héritage ici, avant la vue.
00:02:03 :Donc dans ce cas-ci, pour utiliser le TemplateView, pour créer cette classe TemplateView,on a besoin du TemplateResponseMixin et du ContextMixin, ainsi que de la vue de base.
00:02:13 :Et donc si on va voir un peu plus en détail à quoi correspond ce TemplateResponseMixin,il est défini juste au-dessus, donc ça tombe bien, on n'a pas besoin de faire beaucoup de chemin.
00:02:21 :Et ce TemplateResponseMixin, donc c'est cette classe en fait qui est tout simplement responsablede définir des variables et des comportements par rapport au template.Donc on va avoir cet attribut ici, TemplateName,qui est l'attribut que l'on peut modifier si on souhaite changer les templatesqui sont utilisés par défaut par certaines classes.
00:02:38 :Et on va avoir ici la méthode GetTemplateNames,qui en fait va faire le travail d'aller récupérer les templatesen fonction de ce que l'on a mis dans cet attribut.
00:02:46 :Et donc vous voyez ici qu'en fait c'est tout simplement une classe Python de baseavec des comportements, donc avec des attributs, des méthodes, et qui va faire certaines choses.
00:02:54 :Et si on va voir le ContextMixin cette fois-ci,donc là je vais faire Command-B pour accéder à ce ContextMixin,vous voyez que c'est vraiment très simple.
00:03:01 :A l'intérieur de cette classe, on a juste cet attribut ExtraContextet la fameuse méthode GetContextData que l'on se retrouve souvent à surchargerpuisqu'on veut récupérer les données du contexte,mais souvent également les modifier avant de retourner tout ça à notre vue.
00:03:15 :Donc voilà, c'était juste pour vous montrer que tout ce qu'on va utiliser,donc les TemplateView, les CreateView, UpdateView, ListView, etc,c'est juste un agencement de différentes classes,donc de différents mixins avec une vue.
00:03:27 :Et on peut ajouter un ou plusieurs mixins et on peut faire nos propres vues.Dans les prochaines parties, on va utiliser les vues qui sont définies par Djangopour créer, éditer, supprimer des modèles.
00:03:38 :Mais si jamais vous avez des besoins très spécifiques,je vous conseille d'aller voir un peu tout ça,d'aller explorer les différents mixins qui sont disponibles.
00:03:45 :Ça peut être pratique dans certains cas pour avoir une classe vraiment très optimiséeet qui va utiliser uniquement ce dont on a besoin.Avant de terminer cette vidéo, je vais vous montrer un site qui est très bien fait,qui permet d'illustrer toute cette chaîne de résolution des dépendancesavec les chaînes d'héritage entre les différentes vues et les mixins.
00:04:03 :Alors l'adresse du site, c'est ccbv.co.uket vous voyez qu'on a en fait un aperçu de toutes les vues que l'on peut utiliserOn retrouve par exemple les vues pour les opérations CRUD,donc Create, Delete, Update et le ListView ici,qui est l'équivalent du Retrieve.
00:04:20 :Et donc si on va voir par exemple la vue CreateView,vous allez voir qu'on a un aperçu déjà de où se trouve cette classe dans Django,également de ce qu'on appelle le MRO,donc en fait c'est la résolution des dépendances de cette classe.
00:04:33 :On voit donc qu'elle hérite de tout ça ici,donc de la vue, du ContextMixin, du SingleObjectMixin, du BaseGridView, etc.Et on a également un aperçu de tous les attributs disponibles et de où ils viennent.
00:04:45 :Donc on voit par exemple, si on regarde le ContextObject,on voit que ça vient du SingleObjectMixin,par contre le ExtraContext, lui, vient du ContextMixin.On voit que par exemple pour les Fields, on est avec le ModelFormMixin, etc.
00:04:57 :Donc vraiment ce site, c'est une mine d'or pour savoir les dépendancesentre toutes ces classes et tous ces mixins.Vous voyez également ici toutes les méthodes qui sont disponibleset si vous cliquez sur une des méthodes,vous avez un aperçu de ce à quoi correspond cette méthode.
00:05:10 :Donc c'est vraiment très très pratique si vous voulez vous y retrouverdans tous les attributs et les méthodes qui sont disponibles sur ces différentes classes.
00:05:17 :Vous avez également la possibilité d'afficher ici un diagrammequi va vous montrer la hiérarchie.Donc on voit ici toutes les dépendances qui sont connectées les unes aux autresavec notre vue, avec les mixins, etc.
00:05:28 :Donc c'est vraiment très très pratique, ça permet de vous montrer égalementpourquoi certaines personnes détestent les vues fondées sur les classesparce que vous voyez qu'il y a beaucoup de choses qui sont liées les unes aux autresmais j'espère qu'avec ce site, ça vous permet d'avoir un aperçu un peu plus global
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.