El enfoque principal del marco Django es el modelo (Modelo), la plantilla (Plantilla) y la vista (Vistas), conocido como el patrón MTV.
Sus respectivas responsabilidades son las siguientes:
nivel | responsabilidad |
---|---|
Model (Modelo), la capa de acceso a datos | Manejar todo lo relacionado con los datos: cómo acceder, cómo verificar la validez, qué comportamientos se incluyen, la relación entre los datos, etc. |
Plantilla (Template), la capa de lógica de negocios | Maneja decisiones relacionadas con la presentación: cómo mostrar en una página u otro tipo de documento. |
Ver (View), la capa de presentación | La lógica asociada con el acceso al modelo y la llamada a la plantilla adecuada. Puente modelo y plantilla. |
En pocas palabras, Model accede a los datos, View decide qué datos deben recuperarse y Template es responsable de mostrar los datos recuperados de manera razonable.
Base de datos y modelo
Una base de datos es un lugar para almacenar archivos electrónicos, almacenando colecciones de datos independientes. Una base de datos consta de varias tablas de datos .
¿Qué quieres decir? Por ejemplo, la lista de los estudiantes de la segunda clase del tercer grado es la tabla de datos . Algunas listas registran los puntajes de las pruebas de cada estudiante, algunas registran la altura y el peso, y algunas aficiones... Todas estas listas se colocan en el gabinete del maestro, que es la "base de datos"**.
Por defecto, la base de datos es el archivo db.sqlite3.
El funcionamiento de la base de datos utiliza sentencias complejas de SQL, que es otro lenguaje completamente diferente a Python, que sin duda es difícil para los novatos.
Afortunadamente, escribir aplicaciones web en Django no requiere que operes directamente la base de datos, sino que definas un modelo (¡solo usa la sintaxis de Python!), que contiene los comandos necesarios para operar la base de datos. Es decir, solo necesita definir el modelo de datos y no le importan otros códigos subyacentes, se generarán automáticamente a partir del modelo.
De hecho, tiene un término especial llamado mapeo relacional de objetos ( Object Relational Mapping , ORM para abreviar ), que se utiliza para realizar la conversión entre datos de diferentes tipos de sistemas en lenguajes de programación orientados a objetos.
Escribir modelo.py
Como se mencionó anteriormente, Django se asigna a la base de datos a través del modelo (Modelo) para manejar transacciones relacionadas con datos.
Abra book/models.py
el archivo e ingrese el siguiente código:
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
Book
La clase define la información de un libro: nombre del libro, precio del libro, fecha de publicación, editor de creación, introducción del libro, etc.
También podemos definir algún contenido adicional, Book
el comportamiento de los datos en la especificación:
# 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 clase interna
Meta
defineordering
cómo se organizan los datos.-bookUpdated
Indica que se organizarán en orden inverso al tiempo de creación, asegurando que los últimos artículos estén siempre en la parte superior de la página. Tenga en cuentaordering
que es una tupla, no olvide la coma al final cuando solo hay un elemento entre paréntesis. __str__
El método define el nombre que debe mostrarse cuando los datos necesitan ser representados.__str__
Es importante agregar métodos a los modelos , los más comunes son los valores de visualización como objetos en el administrador de Django. Por lo tanto, siempre se debe devolver una cadena legible por humanos.
Felicitaciones, ha completado la mayor parte del modelo de datos básicos del sitio del blog.
El código tiene menos de 20 líneas, por lo que no lo parece en absoluto. Más tarde, me daré cuenta lentamente del poder de Django.
Las vistas y las plantillas se tratarán en breve.
Migración de datos (Migraciones)
Después de escribir el modelo, se requiere la migración de datos a continuación. Las migraciones son cómo los cambios que Django hace en sus modelos se propagan a la base de datos.
Configuración de MySQL en Django
Configure la conexión de la base de datos MySQL en el
settings.py
archivo del proyecto.# settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '3306', } }
Tenga en cuenta que la migración de datos es necesaria cada vez que se realiza un cambio (agregar, modificar, eliminar, etc.) en la base de datos.
El código de migración de Django se genera automáticamente a partir del archivo del modelo, que es esencialmente solo un registro histórico. Django puede usarlo para realizar actualizaciones continuas en la base de datos, de esta manera puede coincidir con el modelo actual.
En la terminal de PyCharm, ingrese python manage.py makemigrations
, para crear una nueva tabla de migración para cambios de modelo:
(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>
Al ejecutar makemigrations
el comando, Django detectará sus cambios en los archivos del modelo y almacenará los cambios como una migración.
Luego ingrese python manage.py migrate
, para aplicar la migración a la base de datos :
(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 comprueba que la tabla se haya creado correctamente.
migrate
El comando selecciona todas las migraciones que aún no se han ejecutado y las aplica a la base de datos, es decir, los cambios en el modelo se sincronizan con la estructura de la base de datos. La migración es una característica muy poderosa que le permite cambiar continuamente la estructura de la base de datos durante el desarrollo sin tener que eliminar y crear tablas nuevamente. Se centra en permitir actualizaciones de bases de datos fluidas sin pérdida de datos.
Siempre que modifique
models.py
el archivo, debe migrar los datosmakemigrations
con estos dos comandos.migrate
Después de la migración, la escritura del Modelo está completa.
Resumir
Este capítulo tiene una comprensión preliminar del modo MTV de Django, escribió el modelo Model de la publicación del blog Book
y lo migró a la base de datos.
El siguiente paso es View
seguir adelante y aprender cómo llamar a los datos en el modelo.