public:appro-s7:td_web:modeles

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
public:appro-s7:td_web:modeles [2023/10/30 22:32] – [Créer une application] edaucepublic:appro-s7:td_web:modeles [2023/11/05 23:16] (Version actuelle) edauce
Ligne 86: Ligne 86:
 </code> </code>
  
-Créer un modèle de blog post+=== Créer un modèle de blog post ===
  
 Le fichier "blog/models.py" permet de définir les objets que nous appelons des "modèles". C'est à cet endroit que nous allons définir ce que c'est qu'un billet de blog. Le fichier "blog/models.py" permet de définir les objets que nous appelons des "modèles". C'est à cet endroit que nous allons définir ce que c'est qu'un billet de blog.
Ligne 118: Ligne 118:
 Ce gros morceau de code a l'air effrayant, mais, ne vous inquiétez pas : nous allons vous expliquer ce que signifie chacune de ces lignes! Ce gros morceau de code a l'air effrayant, mais, ne vous inquiétez pas : nous allons vous expliquer ce que signifie chacune de ces lignes!
  
-Toutes les lignes qui commencent par "from" ou "import" sont des lignes qui permettent d'importer des morceaux d'autres fichiers. Concrètement, au lieu de recopier ou de copier-coller la même chose dans différents fichiers, nous pouvons tout simplement faire référence à certains morceaux d'autres fichiers à l'aide de "from ... import ..."+''class Billet(models.Model)''
- +
-class Billet(models.Model): +
   * C'est cette ligne qui permet de définir notre modèle (ce qui est un "object").   * C'est cette ligne qui permet de définir notre modèle (ce qui est un "object").
   * Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet.   * Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet.
Ligne 128: Ligne 126:
 Maintenant, nous allons pouvoir définir les propriétés dont nous parlions au début de ce chapitre : "title (titre)", "text (texte)", "created_date (date de création)", "published_date (date de publication)" et "author (auteur)". Pour cela, nous allons avoir besoin de définir le type de chaque champ (Est-ce que c'est du texte? Un nombre ? Une date ? Une relation à un autre objet, comme un objet utilisateur par exemple ?) Maintenant, nous allons pouvoir définir les propriétés dont nous parlions au début de ce chapitre : "title (titre)", "text (texte)", "created_date (date de création)", "published_date (date de publication)" et "author (auteur)". Pour cela, nous allons avoir besoin de définir le type de chaque champ (Est-ce que c'est du texte? Un nombre ? Une date ? Une relation à un autre objet, comme un objet utilisateur par exemple ?)
  
-  * models.CharField - Cela nous permet de définir un champ texte avec un nombre limité de caractères. +  * ''models.CharField'' - Cela nous permet de définir un champ texte avec un nombre limité de caractères. 
-  * models.TextField - Cela nous permet de définir un champ texte sans limite de caractères. Parfait pour le contenu d'un billet de blog, non ? +  * ''models.TextField'' - Cela nous permet de définir un champ texte sans limite de caractères. Parfait pour le contenu d'un billet de blog, non ? 
-  * models.DateTimeField - Détinit que le champ en question est une date ou une heure. +  * ''models.DateTimeField'' - Détinit que le champ en question est une date ou une heure. 
-  * models.ForeignKey - C'est un lien vers un autre modèle.+  * ''models.ForeignKey'' - C'est un lien vers un autre modèle.
  
-Si vous voulez en savoir plus sur les modèles Django, n'hésitez pas à consulter la documentation officielle de Django (https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types).+Si vous voulez en savoir plus sur les modèles Django, n'hésitez pas à consulter la documentation officielle de Django ({{https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types}}).
  
-Et sinon, c'est quoi "def publish(self):? Il s'agit de notre méthode "publish" dont nous parlions tout à l'heure. "def" signifie que nous créons une fonction/méthode qui porte le nom "publish". Vous pouvez changer le nom de la méthode si vous le souhaitez. La règle de nommage est d'utiliser des minuscules et des tirets bas à la place des espaces. Par exemple, une méthode qui calcule le prix moyen d'un produit pourrait s'appeler "calcul_prix_moyen".+Et sinon, c'est quoi ''def publish(self):'' ? Il s'agit de notre méthode "publish" dont nous parlions tout à l'heure. Nous créons une fonction/méthode qui porte le nom "publish". Vous pouvez changer le nom de la méthode si vous le souhaitez. La règle de nommage est d'utiliser des minuscules et des tirets bas à la place des espaces. Par exemple, une méthode qui calcule le prix moyen d'un produit pourrait s'appeler "calcul_prix_moyen".
  
 Les méthodes renvoient ("return") souvent quelque chose. C'est le cas de la méthode "__str__". Dans notre tutoriel, lorsque nous appellerons la méthode "__str__()", nous allons obtenir du texte (string) avec un titre de Billet. Les méthodes renvoient ("return") souvent quelque chose. C'est le cas de la méthode "__str__". Dans notre tutoriel, lorsque nous appellerons la méthode "__str__()", nous allons obtenir du texte (string) avec un titre de Billet.
  
-Créer des tables pour votre modèle dans votre base de données+=== Créer des tables pour votre modèle dans votre base de données ===
  
 La dernière étape pour cette section est d'ajouter notre nouveau modèle à notre base de données. Tout d'abord, nous devons signaler à Django que nous venons de créer notre modèle (nous venons de le terminer !). Allez sur votre terminal et tapez "python manage.py makemigrations blog". Le résultat devrait ressembler à ça : La dernière étape pour cette section est d'ajouter notre nouveau modèle à notre base de données. Tout d'abord, nous devons signaler à Django que nous venons de créer notre modèle (nous venons de le terminer !). Allez sur votre terminal et tapez "python manage.py makemigrations blog". Le résultat devrait ressembler à ça :
Ligne 151: Ligne 149:
 Remarque : N'oubliez pas de sauvegarder les fichiers que vous modifiez. Dans le cas contraire, votre ordinateur exécute la version précédente, ce qui pourrait vous donner des messages d'erreur inattendus. Remarque : N'oubliez pas de sauvegarder les fichiers que vous modifiez. Dans le cas contraire, votre ordinateur exécute la version précédente, ce qui pourrait vous donner des messages d'erreur inattendus.
  
-Django vient de nous préparer un fichier de migration que nous allons pouvoir appliquer dès maintenant à notre base de données. Pour cela, tapez "python manage.py migrate blog". Normalement, vous devrez voir ceci s'afficher dans votre console :+Django vient de nous préparer un fichier de migration que nous allons pouvoir appliquer dès maintenant à notre base de données. Pour cela, tapez ''python manage.py migrate blog''. Normalement, vous devrez voir ceci s'afficher dans votre console :
 <code> <code>
     ~/djangology$ python manage.py migrate blog     ~/djangology$ python manage.py migrate blog
Ligne 160: Ligne 158:
 </code> </code>
  
-Notre modèle Billet est maintenant intégré à la base de données. Ce serait cool de voir à quoi il ressemble réellement ! Pour ça, il va falloir attaquer la section suivante ! Au boulot !+Notre modèle Billet est maintenant intégré à la base de données. Ce serait bien de voir à quoi il ressemble réellement ! Pour ça, il va falloir attaquer la section suivante ! Au boulot !
  
 [[public:appro-s7:td_web:django-admin|6. Administration]] [[public:appro-s7:td_web:django-admin|6. Administration]]
  • public/appro-s7/td_web/modeles.1698701559.txt.gz
  • Dernière modification : 2023/10/30 22:32
  • de edauce