- 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
De716
22 février 2024 - 22 février 2024 à 17:59
checkConversation résolue
4 réponses
user et superuser dans le même modèle
Bonjour, je souhaite dans mon application définir des utilisateurs avec email comme identifiant de connexion et des champs obligatoires nom, prenom et adresse. Dasn le même temps je ne souhaite …
00:00:00 :Dans cette vidéo, on va créer un modèle d'utilisateur qui va être entièrement personnalisé.Donc c'est une bonne façon de procéder si vous souhaitez vraiment personnaliser la façon dont les utilisateurs de votre site vont s'authentifier,par exemple sur votre site, en utilisant par exemple un email à la place d'un nom d'utilisateur.
00:00:28 :Donc à l'intérieur de mon fichier models.py, je vais importer déjà la classe AbstractBaseUser dont on va hériter.Donc je vais faire from Django.contrib.auth.baseUser import AbstractBaseUser.
00:00:43 :On va ensuite créer une classe CustomUser qui va hériter de cette classe AbstractBaseUser.Et on va, à l'intérieur de cette classe, créer nos propres champs qui vont nous permettre de définir notre utilisateur.
00:01:04 :On voit qu'actuellement on a juste deux champs qui sont définis, qui sont le mot de passe et la slugging.Donc on n'a rien d'autre qui est défini et il va falloir qu'on définisse un champ qui sera utilisé comme nom d'utilisateur.
00:01:16 :Dans ce cas-ci, nous ce qu'on va utiliser ce n'est pas un nom d'utilisateur mais une adresse email.Donc je vais créer un champ ici que je vais appeler Email qui va être un champ de type EmailField.
00:01:26 :Déjà il faut que j'importe les modèles, donc je vais faire FromDjango.db ImportModels.Et à l'intérieur des modèles, on va aller chercher le champ EmailField, donc Models.EmailField.
00:01:36 :Et on va spécifier quelques paramètres ici. On va déjà spécifier qu'il doit être unique.Donc ça c'est absolument obligatoire si vous souhaitez utiliser ce champ pour le nom d'utilisateur car on ne souhaite pas avoir logiquement deux utilisateurs qui ont le même nom d'utilisateur.
00:01:50 :Donc dans ce cas-ci le même email.Puisque pour un processus d'authentification, quand on se connecte sur un site, forcément on ne peut pas avoir deux utilisateurs qui ont le même identifiant.
00:02:00 :Donc si vous souhaitez utiliser l'email, il faut bien mettre unique égale true ici.On va ensuite spécifier une longueur maximale qui va être de 255 et on va dire qu'il ne peut pas être vide.
00:02:10 :Donc on va dire blank égale false.Donc c'est tout ce qu'on définit ici et on va ensuite spécifier qu'on veut utiliser ce champ pour le nom d'utilisateur.
00:02:18 :Donc le champ qu'on va utiliser pour se connecter à notre site.Donc on va faire un attribut qui s'appelle username field et qui va être égal à la chaîne de caractère email tout simplement.
00:02:26 :Donc ça c'est le nom de notre champ ici que l'on va utiliser.On n'a pas de required field ici, on ne va pas en mettre.
00:02:33 :Mais si jamais vous aviez des champs que vous souhaiteriez rendre obligatoires, vous devriez mettre un required field ici.Donc par exemple si on souhaitait rendre obligatoire que l'utilisateur rentre un h, par exemple on pourrait faire un champ h ici.
00:02:46 :Donc là il faudrait mettre une liste si je ne me trompe pas.Donc une liste puisqu'on pourrait avoir plusieurs champs ici qui sont requis pour l'utilisateur.
00:02:52 :Donc là il faudrait créer bien entendu un champ associé par exemple avec un integer field ici dans notre modèle.Donc nous on ne va pas faire ça mais je vous le montre quand même puisque ça peut être intéressant d'utiliser d'autres champs ici qui soient requis.
00:03:04 :A la suite de l'email on va également créer quelques champs qui sont nécessaires pour que l'interface d'administration de Django fonctionne.Donc ces champs ils sont à l'intérieur de la documentation dans utilisateur personnalisé et Django contrib admin.
00:03:18 :Donc vous pouvez chercher pour cette phrase ici à l'intérieur de la documentation de Django.Et vous voyez ici qu'il nous indique en fait que ces quatre champs ici sont nécessaires.
00:03:27 :Donc on a isStaff, isActive et là en fait on a deux méthodes hasPerm et hasModulePerm que l'on va devoir créer.Donc on va faire déjà le champ isActive et isStaff.
00:03:37 :Donc isActive ça va tout simplement permettre de définir si un utilisateur est actif ou non.Donc ça va être un champ de type boolean et par défaut on va le mettre à true puisque quand on crée un nouvel utilisateur on souhaite indiquer que l'utilisateur est actif par défaut.
00:03:50 :Et par la suite on pourrait bien entendu choisir de le désactiver donc de passer ce boolean à false.Là il y a juste ici une petite erreur alors une erreur d'indentation voilà que j'ai réglé.
00:04:09 :Donc isStaff ça va nous permettre de spécifier si un utilisateur a accès ou non à l'interface d'administration de notre site.On a ensuite un autre champ qu'on va créer qui est isAdmin cette fois-ci et isAdmin ça va là encore être un boolean.
00:04:56 :Donc là je peux remettre un charField avec blank qui est égal à true puisqu'on peut vouloir ne pas spécifier forcément ce zip code.Donc on pourrait en fait vouloir qu'un utilisateur n'ait pas à rentrer son code postal donc je mets blank égal à true et on va mettre une longueur maximale ici de 5
00:05:11 :puisque le code postal en France ne peut pas faire plus que 5 caractères.Donc là on a tout ce qu'il faut normalement il ne reste plus que les deux méthodes que je vous ai montré à l'intérieur de la documentation.
00:05:21 :Donc la méthode hasPerm et hasModulePerm qu'on va mettre ici.Donc ces méthodes vous pouvez les retrouver à l'intérieur de la documentation ici avec les différents paramètres qui sont acceptés.
00:06:38 :Donc maintenant que j'ai fait tout ça je vais pouvoir appliquer les migrations dans ma base de données pour enregistrer ce modèle d'utilisateur.Donc je vais ouvrir un terminal ici et à l'intérieur du dossier source donc dans lequel je me trouve actuellement je vais pouvoir utiliser python manage.py et make migrations pour créer les migrations à l'intérieur de mon application accounts.
00:07:10 :Puisque abstract user il y avait plusieurs champs par défaut comme le first name, le last name, le username et d'autres champs comme ceci.Là dans ce cas ci on a juste donc le primary key, le id qui va nous permettre de spécifier dans notre base de données les différentes entrées.
00:07:54 :Je vais pouvoir ensuite donc créer tout ça à l'intérieur de ma base de données donc avec la commande migrate.Donc toutes les migrations ont été appliquées et je vais pouvoir regarder ce que ça donne à l'intérieur de table plus.
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.