Django construit un système de gestion de bibliothèque 03 : Écrire un modèle de modèle pour les articles de blog

insérez la description de l'image ici

L'objectif principal du framework Django est le modèle (Model), le modèle (Template) et la vue (Views), connu sous le nom de modèle MTV.

Leurs responsabilités respectives sont les suivantes :

niveau responsabilité
Model (Modèle), la couche d'accès aux données Gérer toutes les questions liées aux données : comment y accéder, comment vérifier la validité, quels comportements sont inclus, et la relation entre les données, etc.
Modèle (Template), la couche de logique métier Gère les décisions liées à la présentation : comment afficher sur une page ou un autre type de document.
Vue (View), la couche de présentation La logique associée à l'accès au modèle et à l'appel du modèle approprié. Pont modèle et modèle.

En termes simples, Model accède aux données, View décide quelles données doivent être récupérées et Template est chargé d'afficher les données récupérées de manière raisonnable.

Base de données et modèle

Une base de données est un endroit où stocker des fichiers électroniques, stockant des collections de données indépendantes. Une base de données se compose de plusieurs tables de données .

Que veux-tu dire? Par exemple, la liste des élèves de la deuxième classe de la troisième année est la table de données . Certaines listes enregistrent les résultats des tests de chaque élève, certaines enregistrent la taille et le poids, et certains enregistrent les loisirs... Toutes ces listes sont placées dans le cabinet du professeur, qui est la "base de données"**.

Par défaut, la base de données est le fichier db.sqlite3.

Le fonctionnement de la base de données utilise des instructions SQL complexes, qui est un autre langage complètement différent de Python, ce qui est sans aucun doute difficile pour les novices.

Heureusement, écrire des applications web dans Django ne vous oblige pas à exploiter directement la base de données, mais à définir un modèle (utilisez simplement la syntaxe Python !), qui contient les commandes nécessaires pour exploiter la base de données. C'est-à-dire que vous n'avez qu'à définir le modèle de données et que vous ne vous souciez pas des autres codes sous-jacents, ils seront automatiquement générés à partir du modèle.

En fait, il a un terme spécial appelé mappage objet-relationnel ( Object Relational Mapping , ORM en abrégé ), qui est utilisé pour réaliser la conversion entre les données de différents types de systèmes dans des langages de programmation orientés objet.

Écrire Model.py

Comme mentionné précédemment, Django mappe à la base de données via le modèle (Modèle) pour gérer les transactions liées aux données.

Ouvrez book/models.pyle fichier et entrez le code suivant :

from django.db import models

# 图书信息数据模型
class Book(models.Model):
    barcode = models.CharField(max_length=20, default='', primary_key=True, verbose_name='图书条形码')
    bookName = models.CharField(max_length=20, default='', verbose_name='图书名称')
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='图书价格')
    count = models.IntegerField(default=0, verbose_name='库存')
    publishDate = models.CharField(max_length=20, default='', verbose_name='出版日期')
    publish = models.CharField(max_length=20, default='', verbose_name='出版社')
    # bookPhoto = models.ImageField(upload_to='img', max_length='100'[错误修正], verbose_name='图书图片')
    bookPhoto = models.ImageField(upload_to='img', max_length=100, verbose_name='图书图片')
    bookDesc = models.TextField(max_length=8000, verbose_name='图书简介')
    bookUpdated = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 't_Book'
        verbose_name = '图书信息'
        verbose_name_plural = verbose_name

BookLa classe définit les informations d'un livre : nom du livre, prix du livre, date de publication, éditeur de création, présentation du livre, etc.

Nous pouvons également définir un contenu supplémentaire, Bookle comportement des données dans la spécification :

# book/models.py

...

class Book(models.Model):
    ...

    # 内部类 class Meta 用于给 model 定义元数据
    class Meta:
        # 数据表名称
        db_table = 't_Book'
        verbose_name = '图书信息'
        verbose_name_plural = verbose_name
        # ordering 指定模型返回的数据的排列顺序
        # '-bookUpdated' 表明数据应该以倒序排列
        ordering = ('-bookUpdated',)

    # 函数 __str__ 定义当调用对象的 str() 方法时的返回值内容
    def __str__(self):
        #  将图书名称返回
        return self.bookName
  • La classe interne Metadéfinit orderingla manière dont les données sont organisées. -bookUpdatedIndique qu'ils seront classés dans l'ordre inverse du temps de création, garantissant que les derniers articles sont toujours en haut de la page. Notez orderingqu'il s'agit d'un tuple, n'oubliez pas la virgule à la fin lorsqu'il n'y a qu'un seul élément entre parenthèses.
  • __str__La méthode définit le nom qui doit être affiché lorsque les données doivent être représentées. __str__Il est important d' ajouter des méthodes aux modèles , dont les plus courantes sont les valeurs d'affichage en tant qu'objets dans l'administrateur Django. Par conséquent, une chaîne lisible par l'homme doit toujours être renvoyée.

Félicitations, vous avez terminé la majeure partie du modèle de données de base du site de blog.

Le code fait moins de 20 lignes, donc ça n'a pas l'air du tout. Plus tard, je réaliserai lentement la puissance de Django.

Les vues et les modèles seront abordés sous peu.

Migration de données (Migrations)

Une fois le modèle écrit, la migration des données est ensuite requise. Les migrations sont la manière dont les modifications apportées par Django à vos modèles sont propagées dans la base de données.

Configuration de MySQL dans Django

Configurez la connexion à la base de données MySQL dans le fichier du projet settings.py.

# settings.py

DATABASES = {
     
     
    'default': {
     
     
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

insérez la description de l'image ici

Notez que la migration des données est requise chaque fois qu'un changement (ajout, modification, suppression, etc.) est apporté à la base de données.

Le code de migration de Django est automatiquement généré à partir du fichier de modèle, qui est essentiellement un simple enregistrement historique. Django peut l'utiliser pour effectuer des mises à jour continues de la base de données, de cette manière, il peut correspondre au modèle actuel.

Dans le terminal de PyCharm, saisissez python manage.py makemigrations, pour créer une nouvelle table de migration pour les modifications de modèle :

(venv) PS E:\djangopj\library> python manage.py makemigrations
Migrations for 'book':
  book\migrations\0001_initial.py
    - Create model Book
(venv) PS E:\djangopj\library> 

En exécutant makemigrationsla commande, Django détectera vos modifications apportées aux fichiers de modèle et stockera les modifications en tant que migration.

Saisissez ensuite python manage.py migrate, pour appliquer la migration à la base de données :

(venv) PS E:\djangopj\library> python manage.py migrate                                           
Operations to perform:
  Apply all migrations: admin, auth, book, contenttypes, sessions
Running migrations:                                              
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying book.0001_initial... OK
  Applying sessions.0001_initial... OK
(venv) PS E:\djangopj\library> 

Navicat vérifie que la table est créée avec succès.
insérez la description de l'image ici

migrateLa commande sélectionne toutes les migrations qui n'ont pas encore été exécutées et les applique à la base de données, c'est-à-dire que les modifications apportées au modèle sont synchronisées avec la structure de la base de données. La migration est une fonctionnalité très puissante qui vous permet de modifier en permanence la structure de la base de données pendant le développement sans avoir à supprimer et à recréer des tables. Il vise à permettre des mises à niveau fluides de la base de données sans perte de données.

Chaque fois que vous modifiez models.pyle fichier, vous devez migrer les données makemigrationsavec ces deux commandes.migrate

Après la migration, l'écriture du Modèle est terminée.

Résumer

Ce chapitre a une compréhension préliminaire du mode MTV de Django, a écrit le modèle modèle de l'article de blog Booket l'a migré vers la base de données.

L'étape suivante consiste à Viewavancer et à apprendre à appeler les données dans le modèle.

Je suppose que tu aimes

Origine blog.csdn.net/mingfeng4923/article/details/131574417
conseillé
Classement