- 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 personlive_helpToutes les questions
Christian Aucane
11 janvier 2023 - 11 janvier 2023 à 7:57
checkConversation résolue
8 réponses
AtributeError avec un AuthenticationForm
Bonjour,J'essaie de faire la même chose avec un formulaire qui hérite de AuthenticationFormVoici le code de ma vue:def login_user(request): if request.method == "POST": form = UserLoginForm(request.POST) # formulaire qui hérite …
00:00:00 :Dans cette partie on va permettre à un utilisateur de se connecter avec unformulaire qui va ressembler très grandement à celui de signup.Donc ce qu'on va faire c'est créer déjà une vue de login, donc on va dans notreprojet créer un template pour cette vue. Donc on va aller dans notre application
00:00:16 :accounts, dans les templates ici, à côté du signup, on va en fait toutsimplement dupliquer le signup, donc je vais faire un ctrl c, ctrl v et je vaisle renommer en login puisqu'on va utiliser quasiment le même template, onpourrait même si on voulait essayer de réutiliser le même template pour ne
00:00:32 :pas réécrire à peu près la même chose mais dans ce cas-ci je veux faire assezsimple donc je vais tout simplement dupliquer ce fichier. Là à la place de
00:00:39 :s'inscrire on va mettre connexion tout simplement, le nom de l'utilisateur et lemot de passe ça reste la même chose, on va récupérer ces informations dans lavue pour connecter l'utilisateur cette fois-ci et non pas l'inscrire et pour lebouton on va mettre également connexion ici. Donc il y a vraiment très peu de
00:00:53 :choses qui ont changé à part le nom du titre et le nom du bouton et on vaensuite donc créer une fonction qui va nous permettre de connecterl'utilisateur. Donc dans le fichier views de notre application accounts on va
00:01:06 :après la fonction logout ou plutôt avant pour que ce soit un peu plus logiquecréer une fonction qui va s'appeler login user qui va récupérer la requêteet là encore vous allez voir que ça va ressembler grosso modo à ce qu'on avaitdans le signup. Donc on va déjà vérifier quel est le type de requête, est-ce qu'on
00:01:22 :est en présence d'une requête de type post dans le cas où donc l'utilisateur aenvoyé le formulaire et si ce n'est pas le cas on va tout simplement retournerle template. Donc on va dire if request.method == post et là on va
00:01:34 :connecter l'utilisateur et si ce n'est pas le cas et bien on va faire un returnde render, on passe la requête, on passe notre template accounts login.html et
00:01:45 :c'est tout. Donc qu'est ce qu'on va faire ici on va récupérer le nomd'utilisateur donc username qu'on récupère à partir du formulaire donclà comme je vous le disais c'est exactement la même chose que ce qu'ona fait pour la vue d'inscription. On récupère le mot de passe dans password.
00:01:59 :Une fois qu'on a récupéré ces informations là on peut fairedifférentes choses, je vais vous montrer une autre façon de faire, on va utiliserune fonction qui s'appelle authenticate qui est disponible dans le moduledjango-contribout également donc le même module que celui dans lequel onretrouve login et logout. Authenticate qu'est ce que ça permet de faire en
00:02:15 :fait ça permet de vérifier que les informations qu'on nous a envoyé sontles bonnes donc on a bien un utilisateur dans notre base de données avec ce nomd'utilisateur et ce mot de passe. Donc pourquoi c'est intéressant et bien tout
00:02:25 :simplement parce qu'on va pouvoir récupérer donc dans une variable userl'information et si l'utilisateur n'entre pas les bonnes informations onpourrait le renvoyer vers une page d'erreur ou vers le formulaire avec unmessage en lui disant qu'il n'a pas rentré par exemple le bon mot de passeou qu'il n'y a pas d'utilisateur avec ce nom d'utilisateur dans la base de données.
00:02:42 :Donc ça permet de faire les choses en deux temps de déjà vérifier que lesinformations sont bonnes et ensuite de connecter l'utilisateur ou de luiafficher un message d'erreur. Donc là on va passer à cette fonction le nom
00:02:52 :d'utilisateur et le mot de passe dans des paramètres qui s'appellent usernameet password là encore. On va dire que si on a un utilisateur donc si
00:03:00 :l'authentification a réussi et bien là on va connecter notre utilisateur aveccette même fonction login qu'on avait utilisé après le sign up donc danscette vue ici une fois qu'on avait créé l'utilisateur on le connectait au siteavec login. Là on n'avait pas besoin de faire cette vérification d'authentification
00:03:16 :puisque on créait directement l'utilisateur dans la base de donnéesdonc forcément que cet utilisateur existe puisqu'on le crée au préalable.Dans ce cas ci ce n'est pas forcément le cas puisque l'utilisateur peut seconnecter ou en tout cas essayer de se connecter avec des identifiants qui nesont pas les bons. Donc si on a bien un utilisateur on le connecte avec login et
00:03:33 :on redirige vers tout simplement là encore la vue de la page d'accueil.Il ne nous reste plus qu'à ajouter un bouton pour pouvoir se connecter dans lefichier de base donc base.html juste au dessus de s'inscrire on va dupliquer
00:03:45 :cette ligne et à la place de s'inscrire on va dire connexion et on va redirigervers l'url login que je crois nous n'avons pas encore créé donc si je vaisdans url ici effectivement on a créé la vue de logout mais on n'a pas le logindonc je duplique cette ligne et on va mettre l'url login on va utiliser la
00:04:03 :vue login user et pour le nom on va mettre login également. Il ne reste plusqu'à importer la fonction login user que l'on avait créé donc bien l'attentiond'importer cette fonction et non pas login qui est la fonction qui permet delogin l'utilisateur dans le module django quand trip hot donc c'est pour ça
00:04:18 :qu'on a rajouté user à la fin de ces deux vues pour bien faire la distinctionentre les fonctions de django et nos vues à nous. Donc normalement on a tout ce
00:04:26 :qu'il faut on a l'adresse avec la vue donc l'url qui va renvoyer vers cettevue de login de login user qui va nous permettre de nous connecter. Donc on va
00:04:34 :vérifier tout ça on va revenir sur notre sitej'actualise la page là j'ai bien le bouton connexion et s'inscrire dans cecas-ci je veux me connecter j'ai bien ma vue de connexion à l'adresse loginje vais rentrer un utilisateur on va essayer test 1 2 3 4 avec 1 2 3 4 5 6 7
00:04:50 :8 je crois que j'avais mis j'ai essayé de me connecter et là ça fonctionne j'aibien test 1 2 3 4 qui est affiché et le bouton des connexions et je peux medéconnecter pour revenir voilà à la vue avec connexion et s'inscrire. Donc tout
00:05:01 :fonctionne parfaitement on a la vue pour s'inscrire on a la vue pour se connecteret la vue pour se déconnecter donc un utilisateur peut maintenant fairel'intégralité de la boucle il y a encore des choses qui manquent par exemple onn'a pas la gestion du mot de passe oublié ou toutes ces choses qu'on
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.