- 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 :Dans cette partie, on va voir comment permettre à un utilisateur de se connecter à notre site.La plupart des choses que je vais vous montrer dans cette vidéo,vous pouvez les retrouver dans la documentation dans « Vues d'authentification ».
00:00:12 :Vous avez toute une partie de cette documentation là encore disponible en françaisqui vous indique comment on va pouvoir créer toutes ces vues.Vous voyez qu'on a beaucoup de vues ici pour le logging, le logout,pour changer son mot de passe, remettre son password à zéro,donc réinitialiser son mot de passe.
00:00:27 :Tout ça, on va pouvoir le faire très facilement avec tout ce que nous propose Django.Là, vous voyez qu'on peut inclure toutes ces URL en utilisant ce chemin d'URLque je vais copier et que je vais inclure à l'intérieur de mon fichier « urs.py ».
00:00:43 :Dans mon cas, j'ai juste remplacé quelques éléments.Par exemple, ici, je ne souhaite pas avoir l'URL « accounts », mais plutôt « comptes » en français.
00:00:50 :Sinon, je vais utiliser ce include qui va inclure tous les chemins d'URL.Et si on veut, on peut aller inspecter un peu plus ce fichier.
00:00:57 :Là, c'est une chaîne de caractère, donc je vais la copier et la coller ici.Et on va tout simplement faire un import pour ensuite pouvoir utiliser l'inspection de PyCharm.
00:01:05 :Je vais faire commande B pour me rendre dans ce fichier « urs.py ».Et vous voyez qu'on fait juste inclure tous ces chemins ici,qui sont les chemins que vous retrouverez dans la documentation.
00:01:16 :Sauf que là, dans la documentation, ça nous montre juste le nom de l'URL.Et nous, ce qu'on veut voir, c'est à la fois l'URL, mais également les vues qui sont appelées.
00:01:24 :Dans ce cas-ci, vous voyez qu'on a des vues fondées sur des classes.Donc la classe « LoginView », par exemple, on a également « LogoutView ».
00:01:31 :Et pour tout le reste, on a également des vues pour changer le mot de passe,pour réinitialiser le mot de passe, etc.Si ça vous intéresse d'aller voir un peu plus comment ces vues fonctionnent,ça peut être très intéressant, puisque c'est en fait tout ce qui est à l'intérieur de ces vues
00:01:44 :qui nous permettrait de faire exactement la même chose à l'intérieur d'une fonction.Je vais faire « Command-B » sur « LoginView » pour vous montrer ce dont je parle.
00:01:52 :Dans cette vue ici, qui hérite de « FormView », c'est une vue de formulaire,on a plusieurs choses ici qui sont affichées.On a notamment le template qui va être utilisé.
00:02:01 :Ce template « Registration slash Logging ».Moi, je l'ai créé ici dans mon fichier de template.Dans « Template » ici, j'ai créé un dossier « Registration » et j'ai créé un fichier « Logging ».
00:02:11 :Et c'est à l'intérieur de ce fichier qu'on va afficher notre formulaire d'authentification.Et si on descend un petit peu ici, vous allez voir qu'on a notamment cette méthode,la méthode « FormValid » qui est très intéressante,puisque c'est cette méthode qui va logger notre utilisateur.
00:02:25 :Donc là, avec « AuthLogin », vous voyez qu'on va récupérer la requête et l'utilisateur à partir du formulaireet on redirige ensuite vers le « GetSuccessURL ».
00:02:34 :Donc nous, ce qu'on peut faire, c'est utiliser directement cette URL.En incluant le « DjangoContribAuthURL », on va inclure la vue de login à notre URL.
00:02:44 :Donc après le compte ici, si je reviens dans « URLs »,vous voyez qu'on va concaténer cet URL compte avec l'URL « Login ».Donc on pourrait bien entendu modifier cela.
00:02:54 :Si on souhaitait avoir à la place de « Login » quelque chose d'autre,on pourrait tout simplement copier cette ligne ici et l'inclure directement dans notre fichier « URLs »et ainsi modifier le « Login » pour mettre par exemple « Connexion »,si on souhaitait avoir un nom d'URL en français.
00:03:07 :Donc dans ce cas-ci, je vais laisser « Compte » avec l'inclusion du « DjangoContribAuthURL ».Et donc si je me rends dans mon site web ici,je vais pouvoir me rendre sur l'interface pour me loguer dans « Compte » « Login ».
00:03:19 :Je valide en appuyant sur « Entrée » et là j'ai mon formulaire qui s'affiche.Alors comment ça se fait que j'ai un formulaire ici ?
00:03:24 :Donc ça c'est comme je vous l'avais dit parce que j'ai créé en fait un fichier « Login.html »dans le dossier « Registration ».Donc là le nom est très important.
00:03:32 :Il faut absolument que ça s'appelle « Registration et Login.html »puisque comme on l'a vu à l'intérieur des vues,donc dans « LoginView » ici,le nom du template que l'on donne ici dans cette vue c'est « Registration.html ».
00:03:45 :Donc là j'ai mon fichier de « Login » et à l'intérieur de ce fichier « Login.html »,donc ce fichier ici, j'ai mon formulaire qui est affiché.
00:03:52 :Donc comme c'est une vue qui hérite de « FormView »,donc si je reviens dans ma vue ici, on voit qu'on a ici « FormView ».
00:03:58 :Donc « LoginView » hérite de « FormView ».Et donc dans les vues fondées sur les classes, dans une vue de formulaire,à l'intérieur de notre fichier HTML, on va avoir directement cette variable « Form »qui va pouvoir être utilisée pour afficher le formulaire correspondant.
00:04:12 :Donc dans ce cas-ci, c'est bien le formulaire qui me permet de me connecteravec un email et un mot de passe.Et vous vous demandez peut-être comment Django arrive à savoir dans ce cas-ciqu'on doit utiliser un email et non pas un nom d'utilisateur.
00:04:25 :Puisque si je reviens ici dans mon fichier « urls.py »,donc ce fichier qui est quelque part ici, qui est en fait dans « Utilisateur »,donc il n'est pas dans mon application ici mais directement dans le dossier de mon projet,donc à côté des « Settings ».
00:04:37 :Donc j'ai mon fichier « urls » ici, et à aucun moment ici on a spécifié quelque partque Django devait utiliser notre modèle custom,puisque dans le « models.py » ici, j'ai, si vous vous souvenez bien,
00:04:49 :un modèle pour mon utilisateur qui est personnalisé,donc qui me permet d'utiliser ce champ d'email.Et là, en fait, dans notre vue, dans notre vue ici,dans laquelle on inclut les fichiers d'URL de Django,on a bien, donc dans « hot.urls », la vue « LoginView » qui est utilisée.
00:05:04 :Mais cette vue-là, c'est la vue de base de Django,et on ne l'a pas touchée pour l'instant, contrairement à quand on a fait la vue pour créer un compte.
00:05:12 :Donc cette vue ici, on utilisait un formulaire personnalisé,et dans ce formulaire personnalisé, on avait besoin de préciser iciqu'on voulait bien utiliser le champ de l'email pour le nom d'utilisateur.
00:05:23 :Là, dans ce cas-ci, on a déjà sur la page de login,le email qui est renseigné à la place du nom d'utilisateur.Alors comment ça se fait ? Comment Django arrive à comprendre ça ?
00:05:32 :Accrochez-vous bien, on va faire un petit peu de navigation dans tous les fichiers de Django,mais vous allez comprendre comment, en fait, Django récupère cette information.
00:05:40 :Donc là, je vais aller à l'intérieur de cette LoginView,et dans cette LoginView, vous voyez que le formulaire qui est utilisé pour la vue,donc le formulaire qui est affiché ici, sur ma page,c'est un formulaire qui s'appelle « AuthenticationFrom ».
00:05:53 :Et si je vais voir ce formulaire,je fais « Command B » à chaque fois pour accéder à ces différentes informations.Sinon, vous pouvez faire un clic droit et aller dans « Go To » et « Declaration or Usage » ici.
00:06:04 :Donc là, ça me permet d'arriver sur ce formulaire.Donc c'est ce formulaire ici qui est utilisé pour afficher les informations ici.Et si on regarde, on a marqué un champ « Username » et « Password ».
00:06:15 :Et alors là, vous vous demandez encore probablementcomment ça se fait qu'on a « Username » dans ce formulaire,alors que sur ma page HTML, j'ai bien marqué « Email ».
00:06:23 :Eh bien, c'est là que vraiment Django est très intelligent,puisque si on descend un petit peu dans ce formulaire,on va voir que dans la méthode « Init »,donc qui est appelée quand on crée une instance de ce formulaire,on a notre « UsernameField » ici,qui est égal à « UserModelMetaGetFieldUserNameModelUserNameField ».
00:06:42 :Donc là encore, ça fait beaucoup de chemin.On va aller voir à quoi correspond le « UserModel ».Et le « UserModel » ici, en fait, c'est une variable qui définit tout en haut du fichier de formulaire.
00:06:52 :Donc là, je vais faire un petit peu de nettoyage pour vous montrer quand même où on était rendu.Donc je ferme un peu toutes ces classes ici.
00:06:58 :Donc on a notre classe « AuthenticationForm ».Et si on descend, on voit que dans notre méthode « Init »,on a le « UserModel » qui est utilisé pour le « UserNameField ».
00:07:08 :Et le « UserModel », qu'est-ce que c'est ?C'est cette variable ici.Et cette variable, elle est égale à « GetUserModel ».Et « GetUserModel », qu'est-ce que ça fait ?
00:07:17 :Eh bien, ça va chercher cette fameuse variable qui est dans les settings,donc dans le fichier « Settings » que j'ai ici.Si vous vous souvenez bien, on a défini quelle classe on souhaitait utiliser pour l'utilisateur.
00:07:28 :Donc c'est pour ça que c'est très important de définir cette variable ici, « AuthUserModel »,puisque vous voyez tout le chemin que fait Django,depuis la vue de logging, donc la vue qu'on avait ici,jusqu'au formulaire d'authentification,jusqu'à cette variable ici qui va récupérer la variable dans les settings.
00:07:44 :Donc vous voyez un peu que ça fait beaucoup de chemin dans tous les sens.Mais ça vous montre pourquoi Django arrive à comprendre que dans ce cas-ci,il faut utiliser pour le champ de l'username, donc pour le champ du nom d'utilisateur,non pas un nom d'utilisateur comme on s'attendrait à l'avoir,
00:07:59 :mais dans ce cas-ci, le champ du nom d'utilisateur qui est renseigné dans mon modèle.Donc dans mon modèle que je vais retrouver ici, donc dans « Models.py »,
00:08:07 :j'avais dit que pour le nom d'utilisateur, je souhaitais utiliser l'email.Donc vous voyez que tout le chemin que fait Django,toute la complexité est gérée automatiquement pour nous,et ça nous permet au final d'avoir ce champ « Email » ici qui est affichégrâce à notre vue « Login View ».
00:08:22 :Donc là, je vais essayer de me connecter pour voir si ça fonctionne.Je vais utiliser un des comptes que j'avais créé dans les parties précédentes.
00:08:28 :Je clique donc sur « Connexion » et là, ça fonctionne plus ou moins.En fait, on est bien connecté.Le problème, c'est juste qu'on a une redirection qui est effectuéevers une page qui n'est pas trouvée, puisque par défaut,il va rediriger vers « Accounts slash Profile » et cette page n'existe pas.
00:08:44 :On n'a pas de chemin d'URL qui va relier cette URL à une vue.Donc on pourrait très bien en créer une en allant dans notre fichier d'URL,donc dans « urls.py » ici.
00:08:54 :Je pourrais très bien faire une URL « Profile slash » et lier ça à une vue.Donc là, on va faire une vue très rapide.
00:09:00 :On va faire une vue qu'on va appeler « Profile » ici.Donc je ferme ma parenthèse et je vais créer cette vue « Profile »à l'intérieur de « Accounts.view ».
00:09:09 :Donc on va faire une vue « Profile » « Request »et on va retourner tout simplement à « HTTP response »et on va afficher le nom d'utilisateur qui est actuellement connecté.
00:09:19 :Donc pour ça, je fais un « fstring » et sur « Request »,on va pouvoir accéder à notre utilisateur.Donc on va faire « Request.user » et là, on va afficher tout simplement
00:09:28 :l'adresse e-mail.Donc je vais dire « Bienvenue » et je vais afficher l'utilisateurqui est connecté, donc « Request.user.e-mail ».Donc je reviens ici, j'actualise et alors ça ne marche pas,puisque ici, c'est « Accounts.profile » et nous, on a mis « Contes ».
00:09:42 :Donc je vais juste modifier ça ici, « Accounts.profile »et je vais également importer « Profile »puisque sinon, ça ne fonctionnera pas.Donc je reviens, j'actualise et cette fois-ci, ça fonctionne.
00:09:52 :Donc on a bien notre URL qui redirige vers la vueet vous voyez qu'on a bien notre adresse e-mail qui est affichée.Donc ça veut dire qu'on a bien réussi à se connecter.
00:10:00 :On peut également se déconnecter très, très facilement.Vous allez voir, donc en utilisant le « Include » ici,donc si je reviens dans le fichier d'URL,on a une URL « Logout » qui va là encore faire tout le travail pour nous.
00:10:12 :Donc « Logout » ici qui va être associé à « Contes ».Donc si je veux me déconnecter, il me suffit de faire « Contes.logout ».
00:10:20 :Je valide avec entrée. Là, vous voyez que j'ai bien été déconnectéet si je clique sur « Connectez-vous à nouveau »,donc là, ça me ramène vers l'interface d'administration de Django.
00:10:29 :Moi, à la place, je valide donc « Contes.login »et là, je vais pouvoir donc cette fois-ci me connecteret être redirigé vers la vue que l'on vient de créer,donc la vue de profil.
00:10:39 :Donc je rentre mes informations, je clique sur « Connection »et là, je suis bien redirigé vers cette vue qui maintenant existe.Donc là encore, c'est peut-être un peu décousu comme vidéo.
00:10:47 :Vous voyez qu'il y a beaucoup de choses qui rentrent en compte.Je veux juste vous montrer avec ces vidéos tout ce que Django peut gérer pour nous.
00:10:54 :Donc on a vraiment des comportements par défaut qu'on peut ensuite modifier.Moi, je vous conseille vraiment d'aller lire la documentation,d'aller fouiller un petit peu dans ces fichiers.
00:11:02 :Ça peut faire peur au début, mais vous voyez qu'en fait,à chaque fois, on va démystifier un peu ce qui se passe.On va voir que finalement, quand on inclut des URL,c'est tout simplement d'autres URL ici qui sont définies avec des vues.
00:11:12 :Quand on va voir dans les vues, on va retrouver des formulaires, des champs,donc finalement, toutes des choses que l'on connaît.Donc en fait, c'est plein de petites choses comme ça,plein de choses granulaires qui sont associéeset qui nous permettent d'avoir très facilementbeaucoup de comportements qui sont gérés pour nous.
00:11:26 :Et après, bien entendu, on pourrait modifier tout ça.Là, on utilise la vue LoginView à partir de ce include.Si on souhaitait donc modifier, par exemple, les URL de redirection,puisque pour l'instant, quand on se connecte,on arrive sur cette vue Accounts slash Profile,donc on pourrait souhaiter rediriger vers une autre vue.
00:11:42 :Eh bien là, rien ne vous empêche, à partir de cette classe LoginView,donc de faire une vue qui hérite de LoginViewet de juste modifier quelques informations.
00:11:51 :Donc par exemple ici, dans LoginView,qu'est-ce qui fait qu'on se retrouve dans l'URL Accounts slash Profileune fois qu'on est connecté ?Eh bien, c'est tout simplement parce qu'on a cette méthode GetSuccessURLqui va être résolue en allant chercher dans le fichier des settingsLoginRedirectURLs.
00:12:06 :Et donc, on pourrait très bien faire une classe qui hérite de LoginViewdans laquelle on va surcharger cette méthode GetSuccessURLet dans laquelle on retournerait une autre URL.
00:12:14 :Donc ça, c'est une possibilité.Vous voyez que quand on commence à comprendre comment fonctionne Django,on peut vraiment faire tout ce qu'on veut,ce qui est généralement conseillé de faire.
00:12:22 :Ce n'est pas donc de créer notre propre classepour surcharger cette fonction,c'est tout simplement de modifier cette variable ici,donc LoginRedirectURL,que l'on peut définir dans notre fichier de settings.
00:12:32 :Donc à la fin ici, je peux faire LoginRedirectURLet indiquer par exemple que je souhaite rediriger vers une URL.Donc on va rediriger par exemple vers notre home ici.
00:12:42 :Donc ça, je peux l'indiquer dans mon fichier de settingset je vais tout simplement mettre une chaîne de caractère vide ici.Donc si je reviens et que j'essaie de me connecter,je vais juste me déconnecter auparavant,donc je vais faire compte Logout.
00:12:55 :Comme ça, je suis déconnecté.Ensuite, je vais faire compte SlashLogin.Je me connecte.Je rentre le mot de passe.Connexion.Alors oui, parce qu'en fait ici,il faut mettre le nom de l'URL et non pas l'URL directement.
00:13:12 :Donc là, si j'essaie de me connecter de nouveau,vous voyez qu'on est bien cette fois-ci redirigé vers l'accueil du site.Donc ici, il faut bien mettre le nom de l'URL,donc le nom que j'ai défini ici,le nom Home qui redirige vers l'accueil de mon site.
00:13:25 :Donc vous voyez qu'encore une fois,on peut aller trouver en fait tout ce qu'il fauten allant lire la documentation,en allant explorer un petit peu tout ce qui se passe à l'intérieur de Djangoet après, il n'y a aucun secret.
00:13:35 :Je pourrais passer des heures à faire des vidéosqui expliquent précisément comment faire chaque action,mais vous êtes encore plus puissant si vous comprenez vous-mêmecomment tout ça fonctionne,comment aller chercher les informations,comment aller modifier ces variables.
00:13:48 :La plupart de tout ce que je vous montre,c'est indiqué directement dans la documentation,donc vous n'avez même pas besoin d'aller fairetous ces chemins comme on l'a fait ici.
00:13:54 :Vous pouvez juste lire la documentationet ça va vous expliquer très concrètement ce qu'il faut modifier.Par exemple, si on va voir Logging Redirect URL,si on tape ça dans la barre de recherche ici,vous allez avoir par exemple ici cette page,donc Utilisation du système de redirectionet si on cherche le Logging Redirect URL sur la page,
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.