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/18 11:57] edaucepublic:appro-s7:td_web:modeles [2023/11/05 23:16] (Version actuelle) edauce
Ligne 1: Ligne 1:
-==== 5. Les modèles dans Django ====+===== 5. Les modèles dans Django =====
  
 Maintenant, nous aimerions créer quelque chose qui permet de stocker les articles de notre blog. Mais avant de pouvoir faire ça, il faut raisonner sur des objets. Maintenant, nous aimerions créer quelque chose qui permet de stocker les articles de notre blog. Mais avant de pouvoir faire ça, il faut raisonner sur des objets.
  
-=== Les objets ===+==== Les objets ==== 
  
 Grâce à la programmation orientée objets, on modélise les choses ainsi que la manière dont elles interagissent entre elles. Grâce à la programmation orientée objets, on modélise les choses ainsi que la manière dont elles interagissent entre elles.
  
-Du coup, c'est quoi un objet ? C'est une collection de propriétés et d'actions. Ça a l'air bizarre dit comme ça. Un exemple devrait vous permettre d'y voir un peu plus clair.+Du coup, c'est quoi un objet ? C'est une collection de propriétés et d'actions. Un exemple devrait vous permettre d'y voir un peu plus clair.
  
 Pour ça, il faut répondre à la question : qu'est-ce qu'un article de blog ? Quelles propriétés devrait-il avoir ? Pour ça, il faut répondre à la question : qu'est-ce qu'un article de blog ? Quelles propriétés devrait-il avoir ?
Ligne 27: Ligne 27:
 Voilà, nous avons une idée de ce que nous avons besoin. Allons modéliser tout ça dans Django! Voilà, nous avons une idée de ce que nous avons besoin. Allons modéliser tout ça dans Django!
  
-=== Les modèles dans Django ===+==== Les modèles dans Django ====
  
-Maintenant que nous savons ce qu'est un objet, nous allons pouvoir créer un modèle Django pour notre billet de blog.+Nous allons maintenant pouvoir créer un modèle Django pour notre billet de blog.
  
 Un modèle Django est un type particulier d'objet : il est sauvegardé dans la base de données. Une base de données est une collection de données. C'est à cet endroit que l'on stocke toutes les informations au sujet des utilisateurs, des billets de blog, etc. Pour stocker nos données, nous allons utiliser une base de données SQLite. C'est la base de données par défaut dans Django. Elle sera largement suffisante pour ce que nous voulons faire. Un modèle Django est un type particulier d'objet : il est sauvegardé dans la base de données. Une base de données est une collection de données. C'est à cet endroit que l'on stocke toutes les informations au sujet des utilisateurs, des billets de blog, etc. Pour stocker nos données, nous allons utiliser une base de données SQLite. C'est la base de données par défaut dans Django. Elle sera largement suffisante pour ce que nous voulons faire.
  
-Pour vous aider à visualiser ce qu'est une base de données, pensez à un tableur avec des colonnes (champs) et des lignes (données). 
  
-=== Créer une application ===+==== Créer une application ====
  
 Pour éviter le désordre, nous allons créer une application séparée à l'intérieur de notre projet. Prenez l'habitude de bien tout organiser dès le début. Afin de créer une application, nous avons besoin d'exécuter la commande suivante dans notre console (prenez garde à bien être dans le dossier "djangology" où se trouve le fichier "manage.py") : Pour éviter le désordre, nous allons créer une application séparée à l'intérieur de notre projet. Prenez l'habitude de bien tout organiser dès le début. Afin de créer une application, nous avons besoin d'exécuter la commande suivante dans notre console (prenez garde à bien être dans le dossier "djangology" où se trouve le fichier "manage.py") :
Ligne 74: Ligne 73:
 Après avoir créé une nouvelle application, vous devez dire à Django de l'utiliser. Nous faisons cela via le fichier "mysite/settings.py". Ouvrez-le dans votre éditeur. Trouvez la section "INSTALLED_APPS" et ajoutez une ligne "'blog.apps.BlogConfig'," juste avant "]". La section doit maintenant ressembler à ceci : Après avoir créé une nouvelle application, vous devez dire à Django de l'utiliser. Nous faisons cela via le fichier "mysite/settings.py". Ouvrez-le dans votre éditeur. Trouvez la section "INSTALLED_APPS" et ajoutez une ligne "'blog.apps.BlogConfig'," juste avant "]". La section doit maintenant ressembler à ceci :
  
-mysite/settings.py+''mysite/settings.py''
 <code python> <code python>
 INSTALLED_APPS = [ INSTALLED_APPS = [
Ligne 87: 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 93: Ligne 92:
 Ouvrez le fichier "blog/models.py" dans votre éditeur, supprimez tout ce qui s'y trouve et copiez-y le morceau de code suivant : Ouvrez le fichier "blog/models.py" dans votre éditeur, supprimez tout ce qui s'y trouve et copiez-y le morceau de code suivant :
  
-blog/models.py+''blog/models.py''
  
 <code python> <code python>
Ligne 119: 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)'':  
- +  C'est cette ligne qui permet de définir notre modèle (ce qui est un "object"). 
-class Billet(models.Model):  +  Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet. 
-  C'est cette ligne qui permet de définir notre modèle (ce qui est un "object"). +  "Billet" est le nom de notre modèle. Vous pouvez lui donner un autre nom (mais vous ne pouvez pas utiliser des caractères spéciaux ou accentués et insérer des espaces). Le nom d'une classe commence toujours par une majuscule. 
-  Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet. +  "models.Model" signifie que "Billet" est un modèle Django. Comme ça, Django sait qu'il doit l'enregistrer dans la base de données.
-  "Billet" est le nom de notre modèle. Vous pouvez lui donner un autre nom (mais vous ne pouvez pas utiliser des caractères spéciaux ou accentués et insérer des espaces). Le nom d'une classe commence toujours par une majuscule. +
-  "models.Model" signifie que "Billet" est un modèle Django. Comme ça, Django sait qu'il doit l'enregistrer dans la base de données.+
  
 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 :
- +<code>  
-  +~/djangology$ python manage.py makemigrations blog 
- +Migrations for 'blog': 
-  +blog/migrations/0001_initial.py: 
-    ~/djangology$ python manage.py makemigrations blog +- Create model Billet 
-    Migrations for 'blog': +</code>
-      blog/migrations/0001_initial.py: +
-        - Create model Billet+
  
 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>
     ~/djangology$ python manage.py migrate blog     ~/djangology$ python manage.py migrate blog
     Operations to perform:     Operations to perform:
Ligne 161: Ligne 156:
     Running migrations:     Running migrations:
       Applying blog.0001_initial... OK       Applying blog.0001_initial... OK
 +</code>
  
-Youpi ! 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.1697623073.txt.gz
  • Dernière modification : 2023/10/18 11:57
  • de edauce