- 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 souhaitez restreindre l'accès à une vue de votre site avec des conditions beaucoup plusspécifiques, vous allez pouvoir utiliser le décorateur User Passes Test. Donc on va pouvoir
00:00:10 :vérifier si l'utilisateur qui accède à notre vue passe certains tests que l'on va définir dans ledécorateur. Donc je l'ai importé ici depuis django.contrib.auth.décorateur et je vais le
00:00:22 :mettre ici au-dessus de ma vue et on va à l'intérieur des parenthèses passer les conditionsque l'utilisateur doit remplir. Et là c'est vraiment open bar, vous pouvez mettre n'importe
00:00:30 :quel type de condition. On va faire une fonction lambda puisque on va passer la condition sousforme de fonction et on n'a pas envie de créer une fonction au-dessus pour ça. Donc on va
00:00:39 :directement le faire à l'intérieur des parenthèses grâce à une fonction lambda. Donc on va passer unparamètre u qui va récupérer notre utilisateur. Donc ça c'est vraiment juste le nom d'un paramètre,
00:00:48 :on pourrait l'appeler n'importe comment. Je l'appelle u puisque comme on a tout sur lamême ligne ici je souhaite garder quelque chose d'assez court. Donc là on pourrait tester
00:00:55 :n'importe quoi. On pourrait tester par exemple si le nom d'utilisateur est égal à tbash. Donc làdans ce cas-ci mon nom d'utilisateur c'est bien tbash donc le test ici va être vrai. u.username
00:01:05 :donc u ici c'est l'utilisateur qui va accéder à notre vue et bien il va bien être égal à lachaîne de caractère tbash. Donc si je reviens sur mon site et que j'actualise, là vous voyez que
00:01:15 :j'ai toujours accès au contenu test de mon site. Par contre si je change, si je mets test à la placeet que je reviens sur mon url que j'actualise, là vous voyez que je n'ai plus accès et queDjango me demande de m'authentifier en me renvoyant vers la page account slash login. Donc vous voyez
00:01:32 :c'est vraiment très puissant, on peut faire plein de choses avec ça. On peut filtrer par nomd'utilisateur donc on pourrait même vraiment afficher une vue uniquement pour un seul utilisateur,c'est vraiment très granulaire. On pourrait par exemple spécifier une date, donc vérifier si
00:01:44 :l'utilisateur a rejoint le site avant une certaine date. On peut également utiliser les groupes,ça c'est quelque chose que je fais très souvent. Par exemple si je reviens dans l'interface
00:01:53 :d'administration et que je vais dans groupe, je vais créer un groupe qui s'appellerait parexemple modérateur avec quelques permissions ici, donc je vais mettre des trucs au hasard.
00:02:02 :Donc là j'ai un groupe qui s'appelle modérateur et je vais m'inclure à l'intérieur de ce groupe.Donc dans utilisateur ici, je vais aller modifier mon utilisateur et je vais m'ajouter dans legroupe des modérateurs. Et donc si je reviens ici, je peux vérifier la condition. Donc dans ce cas ci,
00:02:16 :on va vérifier si modérateur, donc si la chaîne modérateur, la chaîne de caractère modérateur,est contenue dans u.groups.all. Et là il va falloir faire une petite compréhension de liste puisque
00:02:27 :là u.groups.all, ça va me récupérer tous les groupes dans lesquels mon utilisateur se trouve,mais ça va nous retourner des objets groupes. Donc nous on veut récupérer le nom de ces groupes,
00:02:35 :donc on va dire tout simplement ici dans une petite compréhension de liste group.name forgroup in u.groups.all. Donc là on récupère le nom des groupes pour tous les groupes dans
00:02:47 :lesquels l'utilisateur est présent. Et on vérifie si la chaîne de caractère modérateur est àl'intérieur des groupes dans lesquels l'utilisateur se trouve. Donc là c'est le cas puisque je me suis
00:02:57 :bien assigné le rôle de modérateur. Donc si je reviens ici, j'ai bien ici modérateur dansles groupes auxquels je suis assigné. Donc si je reviens sur ma page, sur blog, là j'ai bien
00:03:06 :accès à ce contenu. Par contre si je m'enlève du groupe des modérateurs, donc là je m'enlève dece groupe, je sauvegarde, je reviens sur mon blog, j'actualise et là je n'ai plus accès à la page.
00:03:16 :Donc vraiment vous voyez c'est très très pratique ce user passes test. On peut vérifier plein dechoses, le nom d'utilisateur, les groupes, la date, vraiment tout ce qui vous passe par la tête,vous pouvez le vérifier avec ce décorateur et vous pouvez donc donner accès à certaines pagesde votre site uniquement à certains utilisateurs qui vont passer ces tests.
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.