Compartir tecnología

"Django" viene con su propio backend

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Tema: SmartBlue

Introducción a este artículo

Me gusta + Seguir + Recopilar = Aprendido

00.png

Hablé de ello en el artículo anterior. Django funcionarMySQL El método explica cómo crear un modelo y cómo agregar, eliminar, modificar y consultar la base de datos. Pero tienes que escribir código cada vez que modificas los datos, lo cual es algo problemático.

¿Hay alguna forma más simple?

Alguno alguno,Django De hecho, viene con un backend, que es una interfaz gráfica, y puedes operar fácilmente varios contenidos de datos en él.

A continuación, hablemos sobre cómo utilizar este backend integrado.

Configurar la dirección de enrutamiento en segundo plano

Realmente creando Django Durante el proyecto, ya configuramos la dirección de enrutamiento en segundo plano.

Si sigue mi artículo anterior paso a paso, es posible que se elimine el enrutamiento en segundo plano. No importa, solo invéntalo.

abrir el proyecto urls.py archivo encontradourlpatterns Esta variable se utiliza para completar el enrutamiento en segundo plano.

``pitón

El archivo de enrutamiento del proyecto urls.py

desde django.urls importa ruta desde blog.views importa blogIndex

urlpatterns = [ # Se omiten otras rutas # La siguiente oración es la ruta de enrutamiento para configurar el fondo ('admin/', admin.site.urls) ] ```

Una vez completada la configuración, inicie el proyecto y ábralo en el navegador. http://127.0.0.1:8000/admin/ Puede ver la página de inicio de sesión en segundo plano.

01.png

Crear una cuenta de administrador

Si hay una página de inicio de sesión, debe tener una cuenta correspondiente para iniciar sesión.

Por lo tanto, primero debemos crear una cuenta de súper administración.

Abra la terminal, ingrese al directorio del proyecto e ingrese el siguiente comando para crear una cuenta de súper administración.

python manage.py createsuperuser

Luego, el terminal le devolverá esta línea de información y le pedirá que ingrese el nombre de usuario de súper administración (cuenta)

Username (leave blank to use 'xxx'): admin

'xxx' aquí es el nombre de mi computadora, puede ingresar la cuenta de súper administración después de los dos puntos.Lo que entré aquí esadmin

Después de ingresar su nombre de usuario, le seguirá pidiendo que ingrese su dirección de correo electrónico.

Email address: 123@qq.com

Después de ingresar su dirección de correo electrónico, se le pedirá que ingrese su contraseña dos veces.

  1. Password:
  2. Password (again):

La contraseña que ingreso aquí es 12345678, me recuerda inteligentemente contraseñas que son demasiado comunes, pero escribo y y me quedo con contraseñas tan simples.

  1. This password is too common.
  2. This password is entirely numeric.
  3. Bypass password validation and create user anyway? [y/N]: y
  4. Superuser created successfully.

Ver Superuser created successfully. Esta frase significa que la cuenta se ha creado correctamente.

Ahora abre en el navegador http://127.0.0.1:8000/admin/, entrada de cuenta admin, entrada de contraseña 12345678 Puede iniciar sesión correctamente.

02.png

Antecedentes de la asociación de modelos

Anteriormente hemos utilizado código para operar la base de datos, lo cual no es tan conveniente.

Django Nos proporciona una forma de vincular el modelo de la aplicación al fondo, de modo que podamos operar directamente los datos en la interfaz en segundo plano.

Creado a partir del artículo anterior. account Aplicar como ejemplo.

existir account encontrado en la aplicaciónadmin.py archivo, escriba el siguiente código.

``pitón

cuenta/admin.py

desde django.contrib import admin desde account.models import User

clase UserAdmin(admin.ModelAdmin): # Contenido que se mostrará list_display = ['nombre de usuario', 'correo electrónico']

Vincular el modelo de usuario a UserAdmin

admin.site.register(Usuario, UsuarioAdmin) ```

Es necesario presentarlo aquí primero. admin yUser, porque queremos account El modelo de aplicación está asociado con el backend.

Crea un archivo llamado UserAdmin Clase, escríbelo en él.list_display = ['username', 'email'] , es decir, mostrar en la página de fondousername yemail estos dos campos.

por fin admin.site.register(User, UserAdmin) significa queUser El modelo y el backend están unidos.

Ejecute el proyecto y abra http://127.0.0.1:8000/admin/ E inicie sesión, podrá ver el modelo que acaba de vincular.

03.png

Haga clic en "Tablas de usuarios" para ver la información sobre esta tabla en la base de datos.

04.png

Puede hacer clic en el botón "Agregar" para agregar nuevos datos a esta tabla.

05.png

También puede modificar y eliminar datos específicos.

06.png

Los datos modificados en la página de fondo afectarán directamente a los datos de la base de datos.

De la misma manera, pon blog El modelo de aplicación está asociado con el backend. El funcionamiento aquí es el mismo que antes, así que no lo volveré a explicar.

``pitón

blog/admin.py

desde django.contrib import admin desde blog.models import Artículo

Registre sus modelos aquí.

clase ArticleAdmin(admin.ModelAdmin): # Contenido que se mostrará list_display = ['id', 'title']

Vincular el modelo de usuario a UserAdmin

admin.site.register(Artículo, ArticleAdmin) ```

07.png

Creemos un artículo y echemos un vistazo.

Haga clic en el botón Agregar junto a "Tablas de información del artículo" y complete el siguiente contenido.

08.png

Hacer clic SAVE Después de presionar el botón, los datos se escriben en la base de datos. Regrese a la página de lista de "Tablas de información del artículo" para ver los datos que acaba de escribir.

09.png

Si no está seguro del contenido de todo el proyecto, puede consultar lo que compilé."Columna Django"

Configuración básica del backend.

En las operaciones anteriores, los trabajadores atentos pueden haber notado algunos problemas, como por ejemplo ¿por qué la interfaz está en inglés? ¿Por qué aparece una "s" después del nombre de la tabla?¿Por qué el campo Usuario opcional al crear un artículo no es el nombre de usuario, sinoUser object(1)

A continuación resolveremos estos problemas uno por uno.

Establecer zona horaria e idioma

abrir el proyecto settings.py archivo encontradoLANGUAGE_CODE , establezca su valor en'zh-hans' .y luego encontrarTIME_ZONE configúrelo enAsia/Shanghai

``pitón

configuraciones.py

idioma

CÓDIGO DE IDIOMA = 'zh-hans'

Zona horaria

ZONA HORARIA = 'Asia/Shanghai' ```

10.png

Cambiar el nombre de la columna a chino

Pero en este momento ACCOUNT yBLOG Todavía en inglés, aquí.Django No se puede traducir directamente al chino. Es necesario configurar alias para estas dos aplicaciones.

11.png

La configuración es propia de cada aplicación. apps.py archivo, a través deverbose_name Variable para personalizar el nombre de la columna.

por account Aplicar como ejemplo.

``pitón

cuenta/apps.py

desde django.apps importar AppConfig

clase AccountConfig(AppConfig): predeterminadoautocampo = 'django.db.models.BigAutoField' nombre = 'cuenta' verbose_name = 'Gestión de usuarios' ```

blog Lo mismo aplica.

``pitón

blog/aplicaciones.py

desde django.apps importar AppConfig

clase BlogConfig(AppConfig): predeterminadoautocampo = 'django.db.models.BigAutoField' nombre = 'blog' verbose_name = 'Gestión de artículos' ```

En este momento, actualice la página y verá que el nombre de la columna ha sido cambiado.

12.png

eliminar la forma plural

La "s" después del nombre de la tabla es Django Viene con él. Para eliminar esta "s", también necesitas configurar el alias de la tabla.

En el archivo de modelo de cada aplicación (models.py) configurado en Meta informativoverbose_name_plural

por account Aplicar como ejemplo.

``pitón

cuenta/modelos.py

desde django.db importar modelos

Crear una tabla de usuarios

clase Usuario(modelos.Modelo): id = modelos.AutoField(primarioclave = Verdadero) # nombre de usuario = modelos.CharField ('nombre de usuario', máx.longitud=30, nulo=Verdadero, en blanco=Verdadero, único=Verdadero) # Contraseña contraseña = models.CharField('contraseña', max_length=30) # Correo electrónico correo electrónico = models.EmailField('Email', único=Verdadero, nulo= Verdadero, en blanco=Verdadero)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'

```

Actualice la página y verá que la "s" después de "Tabla de usuarios" desapareció.

13.png

blog Misma razón.

Mostrar campos de clave externa

Cuando agregamos un artículo, debemos ingresar y seleccionar el autor del artículo. El autor de la tabla de artículos está asociado con la tabla de usuarios.

Al agregar un autor, la página muestra directamente el nombre "Objeto de usuario". Si el número de usuarios aumenta, no podremos saber quién es quién.

14.png

Deberíamos mostrar el nombre de usuario.

Modifiquémoslo primero blog Los campos a mostrar.

``pitón

blog/admin.py

desde django.contrib import admin desde blog.models import Artículo

Obtener autor

Este objeto obj se utiliza para recibir instancias de artículos.

def get_author(obj): devuelve obj.usuario.nombreusuario

Registre sus modelos aquí.

clase ArticleAdmin(admin.ModelAdmin): # Contenido que se mostrará # Puedes usar llegar aquí El autor se reemplaza por el nombre de usuario. No es necesario agregar comillas simples ni paréntesis aquí. # django está usando la lista Al mostrar, se pasará un parámetro al método de forma predeterminada. listamostrar = ['id', obtenerautor, 'título', 'contenido']

conseguirautor.cortodescripción = 'Autor'

Vincular el modelo de usuario a UserAdmin

admin.site.register(Artículo, ArticleAdmin) ```

Asociar la clave externa con el método get_author username Se muestran los campos.

15.png

En este punto podremos ver quién es el autor de este artículo. Pero aún necesitamos mostrar el nombre de usuario en la página de edición.

Necesita modificar en este momento User Sólo los modelos servirán.

``pitón

cuenta/modelos.py

desde django.db importar modelos

Crear una tabla de usuarios

clase Usuario(modelos.Modelo): id = modelos.AutoField(primarioclave = Verdadero) # nombre de usuario = modelos.CharField ('nombre de usuario', máx.longitud=30, nulo=Verdadero, en blanco=Verdadero, único=Verdadero) # Contraseña contraseña = models.CharField('contraseña', max_length=30) # Correo electrónico correo electrónico = models.EmailField('Email', único=Verdadero, nulo= Verdadero, en blanco=Verdadero)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'
  7. # 返回用户名
  8. def __str__(self):
  9. return self.username

```

existir account/models.py Añadir al final__str__ método, retornousername

En este momento, el nombre de usuario se puede ver en la página de edición de la información del artículo.

16.png

Enlaces de salto editables personalizados

En la página de administración de artículos, si desea editar un artículo, solo puede hacer clic en el campo "ID" para ir a la página de edición.Si desea saltar a la página de edición haciendo clic en otros campos, debe configurarlo manualmente.blog/admin.py Por ejemplo, quiero hacer clic en "TÍTULO" para ir a la página de edición.

17.png

``pitón

blog/admin.py

Omitir algún código

clase ArticleAdmin(admin.ModelAdmin): # Lista de contenido que se mostrarámostrar = ['id', obtenerautor, 'título', 'contenido'] # lista de campos saltablesmostrarlinks = ['id', 'title'] # Omitir algún código```

Estoy aquí ArticleAdmin añadido enlist_display_links = ['id', 'title'], indicando clic id ytitle Puede saltar a la página de edición.

atributo de solo lectura

Al editar contenido, no queremos que algunos campos sean modificables. Por ejemplo, el ID del blog no se puede modificar.

admisible blog/admin.py Añadirreadonly_fields Especifica campos que no se pueden modificar.

``pitón

blog/admin.py

Omitir algún código

clase ArticleAdmin(admin.ModelAdmin): # Atributo de solo lectura readonly_fields = ['id'] # Omitir algún código````

Al editar en este momento, el valor del campo de identificación no se puede modificar.

18.png


Eso es todo por este artículo. En el próximo artículo, presentaré cómo cargar la información en la base de datos en la página principal.

Imagen_8982.GIF

Me gusta + Seguir + Recopilar = Aprendido