- 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
Maryline
13 septembre 2023 - 13 septembre 2023 à 22:32
checkConversation résolue
2 réponses
Erreur lors de l'utilisateur de l'email comme nom d'utilisateur
Bonjour, Lorsque j'utilise l'adresse email comme nom d'utilisateur et que je fais les migrations j'ai une erreur. ``` **accounts/models.py** class CustomUserManager(BaseUserManager): def create_user(self, email, password, **kwargs): if not email: raise …
00:00:00 :Dans cette partie et les prochaines parties, on va personnaliser notre modèle utilisateurqui pour l'instant ne contient pas grand chose, vous en conviendrez.On a juste créé une classe qui hérite de AbstractUseret on va vouloir changer quelques comportements par défautpuisque actuellement on utilise un nom d'utilisateur pour créer un compte
00:00:18 :et nous on aimerait faire de quelque chose d'un peu plus classiquequi est d'utiliser une adresse email à la place d'un nom d'utilisateur.Donc ce qu'on va faire c'est partir de notre classe ici et rajouter des champsdonc on va modifier le champ d'utilisateur, le champ du nom d'utilisateur
00:00:31 :et on va rajouter un champ pour l'email.Donc pour indiquer qu'on ne souhaite plus avoir de champ pour le usernamedonc le nom d'utilisateur, on va faire tout simplement username égale à nonepuisque par défaut si on va voir cette classe AbstractUserdonc en faisant commande B ou sinon vous pouvez aller dans GoTo
00:00:48 :et ici Declaration or Usage, vous allez voir qu'à l'intérieur de cette classeon a un champ Username qui est de type CharField.Donc ce champ on va devoir le modifier et pour ça on va tout simplement direqu'il est égal à none et ça va ainsi écraser ce champ pour dire qu'on n'en a pas besoin.
00:01:04 :On va également rajouter un champ Email qui lui par contre va être uniquedonc on va devoir rajouter cet élément unique pour dire qu'on ne peut pas avoirplusieurs personnes dans notre base de données, plusieurs utilisateursavec la même adresse email.
00:01:18 :Donc on va faire un Models.EmailField et on va devoir importer également le modèlepuisqu'il n'est pas actuellement importé dans notre fichier.Donc on va faire option Entrée, Import This Name et il se trouve dans DjangoDBsi je me souviens bien, voilà DjangoDB Models, donc FromDjango.db Import Models
00:01:36 :et on va spécifier ici une longueur maximale qui va être on va dire par exemple 240ça devrait être suffisant, largement suffisant pour une adresse emailmais il vaut mieux en mettre un peu plus.
00:01:47 :Et on va spécifier donc unique égale à true.Donc là encore on réécrit ce champ puisque si on va voir à l'intérieur de notre classeAbstractUser et qu'on descend un petit peu, vous voyez qu'on avait déjà un champqui s'appelait Email qui était le même type, donc EmailFieldmais on avait blank égale à true.
00:02:03 :Donc ça voulait dire en fait qu'on pouvait créer un utilisateurqui n'avait pas d'adresse email.Dans ce cas-ci on va rendre cette adresse email obligatoire puisqu'on n'a pas misblank égale à true et on a rajouté donc ce unique égale à truepuisqu'on ne veut pas permettre à plusieurs utilisateurs d'utiliser
00:02:18 :la même adresse email.On va ensuite utiliser une variable ici qui s'appelle UsernameFieldvous voyez que j'ai l'autocomplétion avec PyCharm qui m'indique que c'est bienun nom qui est reconnu en fait par Django.
00:02:29 :Donc ça c'est un nom qu'il faut absolument utiliser.Username tiré du bas, field tout en majusculeet on va dire en fait que pour le nom d'utilisateuron va utiliser l'adresse email.
00:02:39 :Donc ça ça signifie que c'est ce champ qui sera utilisé par exemplepour se connecter sur notre site.On va devoir également spécifier RequiredFieldset RequiredFields qu'est-ce que c'est ?
00:02:49 :C'est tout simplement une liste qui va contenir les champs qui sont obligatoirespour la création d'un compte.Par exemple on pourrait rajouter un champ pour récupérer la date d'anniversaired'un utilisateur et indiquer que ce champ est obligatoire.
00:03:00 :Dans ce cas-ci on ne met rien et ça peut vous sembler un peu bizarrepuisque je viens de vous dire que le champ pour le nom d'utilisateurça va être l'adresse email donc on pourrait se dire qu'on est obligéde mettre ce champ ici dans les crochets.
00:03:12 :Et en fait ce n'est pas le cas et c'est indiqué dans la documentation de Djangopuisque ce champ est utilisé pour le nom d'utilisateurpar défaut ça va être un champ qui est considéré comme requis.
00:03:21 :Et donc vous n'avez pas besoin de le rajouter et d'ailleurssi vous ne mettez pas cette variable iciou si vous mettez email à l'intérieur de ces crochetsvous aurez une erreur de Django.
00:03:31 :Donc c'est pour ça qu'on est obligé de la définir.Nous dans notre cas on ne souhaite pas avoir d'autres champsqui vont être requis donc on ne met rien à l'intérieuret si jamais vous aviez d'autres champs comme je vous disaiscomme la date d'anniversaire ou par exemple le prénom et le nom
00:03:44 :que vous voudriez rendre obligatoireet bien il suffirait de les mettre à l'intérieur de cette liste.Donc voilà pour les champs qu'on avait besoin d'ajouteret donc il ne reste plus qu'à appliquer ces migrationsdonc on va faire make migrations et on valide avec entréeet vous voyez qu'on a enlevé le field username
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.