- 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 vidéo, on va s'intéresser à la classe User, donc cette classe ici,qui nous permet déjà avec Django de base de créer et gérer des utilisateurs.
00:00:09 :Donc je suis actuellement dans le package Django, donc dans Python 3.9 Site Package,dans l'environnement virtuel de mon projet.Je me trouve dans le fichier models.py qui est à l'intérieur de Django Contrib Hot.
00:00:21 :Donc c'est ce package ici dans lequel j'ai ma classe Utilisateur qui est définie.Donc ce n'est pas quelque chose que l'on va modifier directement.Ici, on est dans des fichiers qui appartiennent à Django,mais je vais vous montrer à l'intérieur de ce fichier à quoi ressemble cette classeet également quel héritage on a, puisque vous voyez ici que cette classe User,
00:00:40 :qui nous permet donc de créer des utilisateurs, hérite de AbstractUser.Et AbstractUser, elle est définie juste ici au-dessus.Et cette classe elle-même hérite d'une autre classe qui s'appelle AbstractBaseUser,qui est vraiment la classe de base, qu'on va aller voir tout de suite,et qui définit certains mécanismes comme, par exemple,
00:00:57 :la gestion des mots de passe et de l'authentification,qui nous permet de nous enregistrer, de nous connecter à un site.Donc on va aller voir cette classe ici.
00:01:06 :Je vais faire un clic droit et on va aller sur Go Toet on va aller voir le déclaration Or Usage.Donc je clique ici et ça va m'emmener directement dans ce fichier,donc le fichier BaseUser.py dans lequel est définie cette classe.
00:01:18 :Donc comme je vous disais, c'est en fait une classe qui hérite de Models.Models,donc qui va nous permettre de créer des entrées dans notre base de données.
00:01:25 :Et on a ici deux champs qui sont définis seulement,donc le champ pour le mot de passe et le champ LastLogin,qui est un champ DateTimeField qui va tout simplement renseigner la dateet l'heure à laquelle on s'est enregistré sur le site,on s'est connecté sur le site pour la dernière fois.
00:01:40 :Vous allez voir également qu'on a différents mécanismesqui sont définis à l'intérieur de cette classe,comme par exemple la fonction qui nous permet de sauvegarder cet élémentdans la base de données.
00:01:49 :Et si on descend, on va voir qu'on a d'autres méthodes,comme par exemple une méthode qui nous permet de changer le mot de passeou de vérifier si le mot de passe est correct.
00:01:57 :Donc ça, c'est la classe de base, la classe AbstractUserqui définit vraiment le minimum de choses pour gérer un modèle d'utilisateur.Ce n'est pas cette classe qu'on va utiliser directement dans cette partie,on va utiliser notre classe Utilisateur ici, qui hérite de AbstractUser.
00:02:12 :Donc AbstractUser, on est un niveau au-dessus,donc un niveau au-dessus de cette classe AbstractBaseUser,puisqu'on va hériter donc du mot de passe et du LastLogin,qui nous permet de savoir quand est-ce qu'on s'est connecté pour la dernière fois.
00:02:25 :Mais dans cette classe, on va déjà rajouter encore des choses.Donc on va rajouter notamment un nom d'utilisateur,avec ici le paramètre unique qui est égal à True,donc ça veut dire qu'on ne peut pas avoir deux noms d'utilisateursqui sont similaires dans notre base de données.
00:02:38 :On a également d'autres éléments ici que je vous laisse vérifier,comme par exemple le texte d'aide qui va être affiché,la longueur maximale, et également un UsernameValidatorque vous pouvez aller voir,qui va nous permettre de valider grâce à des regexque notre nom d'utilisateur comporte les caractères qui sont valides.
00:02:54 :On a également d'autres choses qui sont définies ici,donc des champs assez courantsquand on a un modèle de gestion d'utilisateur,comme par exemple le nom, donc FirstName, LastName,donc prénom, le nom, l'email,et également des informations pour savoir par exemplesi l'utilisateur est actif,quand est-ce qu'il s'est inscrit à notre site,
00:03:12 :et s'il fait partie du staff, donc de l'équipe de gestion de notre site,ce qui va nous permettre d'accéder ou nonà l'interface d'administration.On a également des informations intéressantes ici,on a le UsernameField,donc ça c'est ce qui va être utilisépour définir le nom d'utilisateur,donc ça c'est le field Username dans ce cas-ci,
00:03:29 :mais on pourrait mettre n'importe quoi d'autre,on pourrait mettre par exemple l'email,ou un numéro unique, ou n'importe quel autre champque l'on définirait dans notre classe d'utilisateur.
00:03:38 :Ce champ ici, il doit être absolument unique,donc c'est ce qu'on a ici,on a notre champ Username,qui est un champ de type CharField,et on a bien unique, qui est égal à True.
00:03:47 :Donc c'est vraiment grâce à ce champ Usernameque l'on va pouvoir distinguer différents utilisateurs.On a également ici un attribut RequiredFields,qui indique les éléments qui sont obligatoires,donc par exemple ici, on a le champ Email,qu'il faut absolument renseignersi vous souhaitez créer un utilisateur.
00:04:03 :Donc ça c'est notre classe AbstractUser,et si on retourne au niveau de notre classe User,vous voyez qu'ici on a très peu de choses qui sont définies,on a juste une classe Meta ici,qui est définie à l'intérieur de notre classe,donc toute la logique se trouve vraimentau niveau de AbstractUser et AbstractBaseUser.
00:04:18 :Donc on va voir tout de suite ce que ça donneà l'intérieur d'un terminal,je vais vous montrer comment créer un utilisateurtrès facilement à partir de cette classe.
00:04:25 :Donc on va aller dans notre terminal,je suis là dans le dossier Source,donc dans ce dossier ici qui contient le fichiermanage.py,et je vais pouvoir donc lancerun interprèteur interactifà l'intérieur de mon projet Django.
00:04:37 :Donc je fais python manage.py,et je lance la commande Shell.Assurez-vous de bien avoir sourcé votre environnementvirtuel auparavant,moi ça le fait automatiquement dans PyCharmici puisque quand j'ouvre le terminalet que je setup ici mon interprèteur Python,il va automatiquement l'activer,mais si ce n'est pas le cas,
00:04:52 :n'oubliez pas de faire un source du fichieractivate à l'intérieur de votre environnement virtuel.Donc moi je vais faire python manage.py Shell,et on va importer cette classequi se trouve donc dans ce module,dans le module Django Contrib Hotet dans le fichier models.py.
00:05:08 :Donc ici je vais fairefrom django.contrib.hot.models import user.Donc on va utiliser cette classepour créer un nouvel utilisateur.Donc on va faire user.object,et sur notre manager ici,donc le manager de notre classe user,on peut utiliser une fonctionqui s'appelle create user,et qui va nous permettre de créer un utilisateur.
00:05:29 :Donc cette fonction elle est définieà l'intérieur de models.py ici,donc je peux faire une rechercheen faisant commande F,et on va chercher create user,et vous voyez qu'ici on a notre managerqui va être utilisé par la classe userpour créer un utilisateur.
00:05:43 :Donc le manager en fait,c'est ce qu'on retrouve iciquand on fait user.object,on a user manager qui est défini ici,et si je retourne,alors je ne sais pas exactementdans quelle classe ça va être défini,donc ce n'est pas dans user ici,ça doit être dans abstract user.
00:05:55 :Si on descend, voilà object,vous voyez que object ici,donc c'est ce qu'on utilise à ce niveau,donc quand on fait user.object,on utilise object ici, cet attribut,et bien cet attribut il est égal à user manager.
00:06:06 :Et dans user manager,on a donc cette fonction create userqui va nous permettre de créer un utilisateur.Donc si on explore un petit peuce qui se passe ici,on voit que cette fonctionelle attend un nom d'utilisateur,donc un username, un email,et un mot de passe.
00:06:18 :Et on peut également passer d'autres fields,donc d'autres champs supplémentairessi on le souhaite.On voit ici que donc on retournecette fonction create userqui est définie juste au-dessus,et dans cette fonction,et bien on va tout simplementfaire quelques opérationscomme par exemple vérifiersi on a bien un nom d'utilisateur,
00:06:32 :donc là vous voyez que c'est obligatoirede passer un nom d'utilisateurpour créer un utilisateuravec cette classe.On va normaliser l'adresse email,on va normaliser le nom d'utilisateur,et ensuite on va créer un modèleà partir de toutes ces informations.
00:06:46 :On change le mot de passeet on sauvegarde l'utilisateurdans la base de données.Donc nous ce qu'il faut définir ici,c'est tout simplement le nom d'utilisateur,l'email et le mot de passe.
00:06:54 :Donc je vais le mettre ici,je vais mettre usernameet on va mettre tout simplementtbash.Je vais renseigner un email,donc email on va mettrehello.docstring.fr
00:07:03 :et pour le mot de passe,je vais mettre tout simplementpour l'instant 1, 2, 3, 4, 5, 6,ce n'est pas très important dans ce cas-ci.
00:07:09 :Donc j'appuie sur entrée pour valideret là vous voyez qu'on a une erreuret donc c'est normalpuisqu'on n'a pas encore créénotre base de données.
00:07:16 :Donc pour ça on va devoir utiliserauparavant la commande migrate,donc je vais ouvrir un nouveau terminal ici,je vais me rendre dans le dossier sourcepour réutiliser python-manage.py
00:07:26 :et on va faire migratepour créer les migrations d'originesur notre base de données.Donc là ça va créer toutes les tablesqui vont nous permettrede créer des utilisateurs,donc vous voyez icià partir de cette application OTS,de l'application admin,content types etc,toutes les migrationsqui vont être exécutées.
00:07:42 :Donc tout ça, ça va être créédans notre base de donnéeset si on revient ici dans notre projet,on voit bien qu'on a db.sqlite3 ici
00:07:48 :qui est notre base de données.Donc on va pouvoir retourner icipour créer notre utilisateur,donc je relance cette commande ici,je valide avec entréeet là cette fois-ci ça a fonctionnéet on a bien notre utilisateur qui est créé.
00:07:59 :Donc si je veux l'afficher,je peux faire user.objectet dans ce cas-ci,on n'a qu'un seul utilisateur,celui qu'on vient de créer,donc je vais pouvoir utiliser firstpour récupérer le premier utilisateurde ma base de données.
00:08:09 :Donc si j'affiche mon utilisateur,on voit bien qu'il s'agit de tbh ici,je peux afficher l'adresse emailqui est bien hello.docstring.fr.Si j'affiche le mot de passe,vous allez voir qu'icion n'a pas le mot de passe en clairet ça c'est normal et c'est bien heureuxpuisque les mots de passe
00:08:23 :ne sont bien entendu pas stockés en clairdans les bases de données avec Django.Donc c'est en fait un hash qu'on voit ici,un hash SHA256qui va en fait encrypter mon mot de passepour qu'il ne soit pas affiché en clair.
00:08:36 :Bien entendu, on va quand même pouvoirse logger dans notre interfaceavec notre mot de passe,on n'aura pas besoin de rentrer tout ça ici,c'est juste un système d'encryptionqui me permet de ne pas stockerle mot de passe en clairdans ma base de données.
00:08:47 :Si on veut changer le mot de passe,on va utiliser donc la fonction setPasswordet on va modifier le mot de passe,on va mettre par exemple ici6543, donc en chaîne de caractère,je vais mettre 654321,je ferme, je valideet là ça nous permet donc avec cette fonction ici
00:09:03 :de changer le mot de passe de l'utilisateuravec cette encryption qui va être rajoutéepour ne pas stocker le mot de passeen clair dans la base de données.
00:09:10 :Donc je peux ensuite sauvegardermon modèle d'utilisateuret j'ai ainsi modifié mon mot de passe.Donc vous voyez queavec cette classe par défaut,ça fonctionne très bien, c'est facile,on n'a rien besoin de faire,rien besoin de définir.
00:09:22 :Si je vais dans mon application Accounts icià l'intérieur des modèles,je n'ai absolument rien.Donc je peux utiliser cette classe de base,donc la classe Userpour créer mes utilisateurs.
00:09:33 :Le problème de ça,c'est que je suis complètement contraintà ce qui est défini dans ces classes.Donc là, si on retourne dans la classe User,donc Abstract User ici,vous voyez qu'on a uniquement ces champsqui sont disponibles,donc le champ pour le nom d'utilisateur,on a un champ FirstName, LastName,
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.