- 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 personCréer notre premier modèle
Pour créer un modèle, on utilise les principes de l'orienté objet.
Le modèle est ainsi représenté par une classe qui hérite de la classe Model
du module django.db.models
.
On dispose ensuite de différents champs disponibles pour représenter les différentes propriétés de notre modèle.
Ces champs sont définis par des attributs de classe :
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField()
published = models.BooleanField(default=False)
date = models.DateField(blank=True)
content = models.TextField()
00:00:00 :Avant de pouvoir créer des modèles, il va falloir créer une application à l'intérieur de notre projet Djangoet c'est dans cette application qu'on va pouvoir créer des modèles.
00:00:09 :Pour ça, je vais donc ouvrir un terminal.Assurez-vous de bien être dans le dossier src,donc le dossier qui contient notamment le fichier manage.py que l'on va utiliser pour créer notre application.
00:00:20 :Donc je vais faire python manage.py et on va utiliser la commande startupet donner un nom à notre application.Dans ce cas-ci, on va créer une application pour gérer toute la partie blog de notre projet,donc on va l'appeler blog tout simplement.
00:00:34 :Je valide en appuyant sur entrée et ça va ici dans ma structure de dossiercréer à l'intérieur de src un nouveau dossier qui s'appelle blogqui va contenir tous les fichiers qui vont me permettre de gérer mon application.
00:00:46 :Cette application, il va déjà falloir l'ajouter au niveau de notre dossier website dans le fichier settings.On va devoir l'ajouter dans cette liste ici install the appspour que l'on puisse par la suite utiliser les commandes qui vont nous permettre de créertous les modèles à l'intérieur de notre base de données.
00:01:04 :Donc à la suite de ces éléments ici dans install the apps,on va à la ligne et on met tout simplement des guillemets avec le nom de notre application,donc dans ce cas-ci blog.
00:01:12 :Faites bien attention d'avoir la virgule avant la fin de cette ligne icipuisqu'il s'agit d'une liste python,donc il faut bien que chaque élément soit séparé d'une virgule.
00:01:20 :Donc une fois qu'on a ajouté notre application,on va pouvoir aller créer nos modèles à l'intérieur du fichier models.py.Donc le fichier ici qui est à l'intérieur de mon application blog,il est déjà créé par défaut quand on crée notre application,donc vous n'avez pas besoin de le créer
00:01:35 :et c'est à l'intérieur de ce fichier que l'on va créer les modèles qui vont servir à notre application,donc dans ce cas-ci le modèle qui va nous permettre de gérer les articles de notre blog.
00:01:44 :Donc un modèle c'est une classe python,donc on va utiliser le mot classe pour créer notre modèle,on va l'appeler blog post,donc on utilise la nomenclature pour les classes avec une majuscule au début de chaque mot,donc sur le B et sur le P dans ce cas-ci.
00:01:58 :On ouvre des parenthèses et cette classe elle va hériter de models.models,donc de la classe model qui est contenue dans le package models.Ce package il est déjà importé dans le fichier,donc vous n'avez pas besoin de le faire,il est fait automatiquement à cette ligne ici,donc from django.db import models.
00:02:15 :Si jamais vous n'avez pas cette ligne,rajoutez-la pour bien importer le module models qui contient la classe model dont on hérite.Donc ça c'est bien important,n'oubliez pas de mettre entre les parenthèses cette classe,puisqu'on hérite de cette classe pour pouvoir créer notre propre modèle avec ses propres champs.
00:02:30 :Donc à l'intérieur de cette classe on va mettre directement ici,comme attribut de ma classe,les champs que l'on veut créer.Donc pour ça on va mettre le nom du champ,et ensuite quel type de champ on veut avoir.
00:02:41 :Donc on va commencer par créer un champ qui va s'appeler titre,donc title en anglais,et on va dire qu'il va être égal à un champ de type charField.
00:02:49 :Donc ces champs ils sont disponibles là encore dans le module models,et dans ce cas-ci, vous le voyez,il apparaît tout en haut dans ma liste.
00:02:56 :Donc si vous ne le voyez pas de votre côté,vous pouvez taper les premières lettres,et avec l'autocomplétion vous devriez voir le nom du field au complet.
00:03:02 :Donc c'est cette classe ici qui va nous permettre de créer un champ de type charField.Donc charField c'est pour stocker des chaînes de caractères avec une longueur définie.
00:03:11 :Je vais juste ajouter une ligne ici pour ne plus avoir cette ligne qui est surlignée par PyCharm,puisque PyCharm m'indique qu'il faut avoir deux espaces entre les imports et ma classe,donc j'ai rajouté un espace pour ne plus avoir cet avertissement.
00:03:24 :Et ensuite à l'intérieur de ce champ,on va rajouter un paramètre qui va nous permettre de spécifier la longueur du champ.Ça c'est obligatoire avec les charField,c'est la différence entre les charField et les textField.
00:03:36 :Le charField il va avoir une longueur maximale.Donc le paramètre qu'il faut ajouter c'est maxLengthet on va mettre dans ce cas-ci par exemple une longueur maximale de 100 caractères pour un titre d'article,ça devrait suffire.
00:03:47 :On va ensuite ajouter un champ qui s'appelle slug,qui est en fait un champ de type slugField.Donc dans Models, là encore vous allez trouver ce champ en commençant à taper les premières lettres,donc slugField ici.
00:03:59 :À l'intérieur des parenthèses on ne va rien mettre,il n'y a pas besoin de mettre de valeur par défaut ou de spécifier une longueur maximale dans ce cas-ci.
00:04:06 :Un slug, qu'est-ce que c'est ?Et bien c'est tout simplement un moyen d'afficher le titre de notre article dans l'URL.Donc par exemple si on a un article qui s'appelle les bases de Django,si on transforme cette chaîne de caractères en slug,ça va donner quelque chose comme ceci.
00:04:20 :Donc en fait ça va mettre tout en minuscules,ça va convertir les espaces en tirets,et si par exemple on avait des caractères spéciaux comme un accent ou un ccd,donc des choses du genre,ça les transformerait pour par exemple les transformer en e sans accent ou en c sans la cd.
00:04:36 :Donc les slugs c'est très pratique, c'est ce qu'on utilise dans les URL,donc généralement vous allez avoir envie de rajouter ce slugFieldqui va nous permettre de stocker cette information sur vos modèles.
00:04:47 :On va ensuite ajouter un champ qui va s'appeler Published,qui va être dans ce cas-ci un booleanField.Alors là vous pouvez mettre une valeur par défaut,pour spécifier une valeur par défaut qui va être setée quand on va créer une instance de notre modèle,il suffit d'utiliser le paramètre Default
00:05:03 :et de spécifier la valeur que l'on veut donner par défaut.Donc là il faut faire bien attention puisqu'il faut que ce soit cohérent avec le type de champ que vous créez.
00:05:10 :Dans ce cas-ci je crée un champ de type boolean,donc les deux options qui vont être valides pour le défaut ça va être soit True soit False.
00:05:17 :Dans ce cas-ci je ne veux pas que les articles par défaut soient publiés,donc je vais mettre un défaut avec une valeur de False.Ça vous pouvez le faire sur tous les champs qu'on a créés,sur le slugField, sur le charField,à chaque fois vous pouvez spécifier une valeur par défaut,
00:05:30 :vous n'êtes bien sûr pas obligé de le faire,mais dans ce cas-ci moi je préfère avoir cette valeur par défaut,puisque je ne veux pas par défaut que mes articles soient publiés.
00:05:38 :On va ensuite créer un champ Date qui va contenir la date de publication de l'article.Pour ça on a un champ qui est spécialement prévu pour ça qui s'appelle DateField,donc vous avez DateField et DateTimeField.
00:05:50 :Donc la seule différence entre les deux c'est que sur la date vous n'aurez que la date,et DateTime vous aurez à la fois la date et également la possibilité de mettre une heure dans ce champ.
00:05:59 :Donc moi je ne veux juste la date, donc je vais faire un DateField,et là je vais dire Blank égale True.Donc Blank ça signifie qu'on veut permettre à ce champ de ne contenir aucune valeur.
00:06:10 :Si vous ne mettez pas Blank égale True,quand vous allez créer une instance de l'article du blog avec BlogPost,si vous ne mettez pas de valeur dans DateField,il va vous dire qu'il faut mettre une valeur obligatoirement pour la date.
00:06:21 :Moi dans ce cas-ci pour ce champ je n'ai pas forcément envie de mettre une valeur,puisque quand je vais créer un article je ne sais pas forcément par avance à quelle date je vais le publier,donc dans ce cas-ci je vais spécifier Blank égale True.
00:06:34 :Ça encore vous pouvez le mettre à peu près partout,par exemple pour le titre actuellement vu que je n'ai pas mis Blank égale True,si je crée une instance de BlogPost il va obligatoirement me demander de mettre un titre,pareil pour le slug,donc si je ne mets pas Blank égale True je vais être obligé de mettre un titre ou un slug.
00:06:50 :Donc là c'est à vous de voir quel comportement vous souhaitez avoir pour votre modèle.Pour finir on va créer un dernier champ qui va contenir le contenu de mon article de blog,donc dans ce cas-ci je vais l'appeler Content,et cette fois-ci je vais créer un TextField,donc comme je vous disais la seule différence entre le ChartField et le TextField,
00:07:07 :c'est que le TextField vous n'avez pas besoin de spécifier une longueur maximale,donc ça peut contenir beaucoup plus de texte qu'un ChartField,et vous n'avez pas besoin de spécifier ce paramètre MaxLength,donc c'est parfait pour stocker le contenu de notre article.
00:07:20 :Donc on a fini de créer la base de notre modèle,vous voyez ce n'est vraiment pas compliqué,on crée une classe, on hérite de la classe modèle,et ensuite on spécifie les champs qu'on veut avoir dans notre base de données.
00:07:32 :Vous remarquez ici que je n'ai donc pas spécifié le champ ID,donc le champ pour la clé primaire,si je voulais je pourrais spécifier dans tous ces champs que j'ai créé,un champ que je voudrais utiliser comme clé primaire,pour ce faire il suffirait de mettre le paramètre PrimaryKey à True,
00:07:48 :et si je fais ça, c'est ce champ qui sera utilisé en tant que clé primaire.Moi je n'ai pas envie d'avoir ce comportement,je préfère Django gérer ça de son côté,et automatiquement ajouter le champ ID pour gérer la clé primaire,donc je ne vais pas ajouter ce paramètre,
00:08:03 :mais sachez que c'est possible avec le paramètre PrimaryKeyde modifier le champ qui va servir de clé primaire dans votre base de données.Donc voilà pour notre modèle,vous voyez qu'il y a plusieurs paramètres qu'on peut changer,donc il y a pas mal de choses que vous allez découvrir au fur et à mesure
00:08:17 :que vous utiliserez Django,pour l'instant on a utilisé quelques paramètres,comme par exemple le défaut comme Blankqui me permet de spécifier des champs qui vont être optionnels,et également des paramètres qui sont absolument obligatoires,comme par exemple sur le Charfield, le Max Length,si vous ne mettez pas ce paramètre, Django va vous retourner des erreurs.
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.