Django implementa sitio web de música⑺

Cree un sitio web de música utilizando el marco Python Django ,

Este artículo es principalmente para optimizar las funciones de implementación originales del cantante en segundo plano.

 

Tabla de contenido

Nueva edición

Modificación del nombre del campo de la tabla

Ocultar número de sencillos y álbumes

iniciales

instalar xpinyin

obtener iniciales

anular el método de guardar

pantalla de lista

Procesamiento de visualización de imágenes

función de importación

Cambiar la ruta para mostrar la imagen

Modificar valores predeterminados de la lista

Modificar clasificación de lista

Resumir


 

Nueva edición

Modificación del nombre del campo de la tabla

Los campos de página agregados y editados se muestran como campos de diseño de tabla de datos, que se muestran en chino.

Modifique el campo Singler directamente en el modelo y agregue el parámetro verbose_name.

verbose_name: el nombre para mostrar del campo en el esquema de administración.

El contenido es el siguiente:

class Singler(models.Model):
    """ 歌手表模型 """

    class Meta:
        verbose_name = '歌手'
        verbose_name_plural = '歌手'

    name = models.CharField(max_length=50, help_text='请输入歌手名称', verbose_name='姓名')
    first_letter = models.CharField(max_length=15, help_text='请输入歌手名称首字母', verbose_name='姓名首字母')
    # 设置上传位置
    portrait = models.ImageField(upload_to=upload_save_path, help_text='请上传歌手照片', verbose_name='照片')
    birthday = models.DateField(default=date.today, help_text='请选择歌手生日', blank=True, verbose_name='生日')
    height = models.IntegerField(help_text='请输入歌手身高(cm)', default=0, blank=True, verbose_name='身高(cm)')
    weight = models.IntegerField(help_text='请输入歌手体重(kg)', default=0, blank=True, verbose_name='体重(kg)')
    constellation = models.CharField(max_length=50, help_text='请输入歌手星座', verbose_name='星座')
    # editable=False 后台将不再显示
    single_num = models.IntegerField(default=0, editable=False)
    album_num = models.IntegerField(default=0, editable=False)
    desc = models.TextField(help_text='请输入歌手简介', verbose_name='简介')

Efecto:

 

Ocultar número de sencillos y álbumes

La cantidad de sencillos y álbumes que posee un cantante debe ser un valor calculado dinámicamente al agregar o eliminar un sencillo o álbum, y no debe agregarse en segundo plano. No se ocultará antes, y el método de configuración se puede encontrar marcando los parámetros del modelo de tabla.

editable: el valor predeterminado es Verdadero;

Si el valor es Fasle, no se puede volver a escribir en el modo de administración.

Modifique los campos de número único y número de álbum del modelo de tabla de cantantes y establezca el parámetro editable.

El contenido es el siguiente:

single_num = models.IntegerField(default=0, editable=False)
album_num = models.IntegerField(default=0, editable=False)

Después de actualizar, ya no se mostrarán los ajustes para la cantidad de sencillos y la cantidad de álbumes de los detalles del artista recién agregado.

iniciales

Las iniciales originales deben ingresarse manualmente, pero el programa obtiene automáticamente las iniciales del nombre del cantante ingresado.

instalar xpinyin

Debe descargar la biblioteca de tres partes, instalar el comando:

pip install xpinyin

obtener iniciales

Obtenga la primera letra y configure la operación de almacenamiento en player/models.py.

from xpinyin import Pinyin


def get_first_letter(name):
    """ 获取姓名中的首字母 """

    obj = Pinyin()
    name_pinyin = obj.get_pinyin(name, '')
    return name_pinyin[0]

anular el método de guardar

En la clase Singler, reescriba el método save de la clase principal y agregue las iniciales del nombre del cantante.

Y configure el campo de la primera letra como administrador no editable.

class Singler(models.Model):
    """ 歌手表模型 """

    ......

    def save(self, force_insert=False, force_update=False, using=None,
             update_fields=None):
        """ 重写save方法 """

        self.first_letter = get_first_letter(self.name)
        super().save()

 

pantalla de lista

Procesamiento de visualización de imágenes

Modifique la tabla de cantantes de fondo, SinglerAdmin en admins.py en el reproductor.

Es necesario utilizar la función format_html().

 

función de importación

from django.utils.html import format_html

Cambiar la ruta para mostrar la imagen

class SinglerAdmin(admin.ModelAdmin):

    # 列表页属性
    def get_name(self):
        return self.name

    get_name.short_description = '歌手名称'

    def get_portrait(self):
        return format_html(
                '<img src="/{}" width="100px" height="100px"/>',
                self.portrait,
            )

Motivo: cuando django pasa la cadena HTML de la vista a la plantilla, django no muestra el HTML de forma predeterminada. El motivo es evitar el código de ataque malicioso en esta cadena. Por lo tanto, para cambiar la ruta de la imagen de la lista para mostrar imágenes, debe usar una función para asignar la ruta de la imagen al elemento HTML img a través del marcador de posición {} de la función.

Efecto:

Modificar valores predeterminados de la lista

Es adecuado para configurar el contenido de la pantalla cuando un determinado campo de la lista está vacío.

Por ejemplo, la altura y el peso del cantante están configurados en 0 de forma predeterminada.

 

Modifique el procesamiento de visualización de altura y peso en player/admin.py.

El contenido es el siguiente:

def get_height(self):
    if self.height < 1:
        return '——'
    else:
        return str(self.height) + 'cm'

get_height.short_description = '身高'

def get_weight(self):
    if self.weight < 1:
        return '——'
    else:
        return str(self.weight) + 'kg'

Efecto:

Modificar clasificación de lista

Utilice la clase Meta para asignar metadatos al modelo y establecer el orden.

class Singler(models.Model):
    """ 歌手表模型 """

    class Meta:
        verbose_name = '歌手'
        verbose_name_plural = '歌手'
        # 正序
        ordering = ['first_letter']
        # 倒序
        # ordering = ['-first_letter']

Resumir

Optimice algunas funciones del módulo de cantante de fondo, principalmente agregando dos aspectos de edición y listado.

Supongo que te gusta

Origin blog.csdn.net/json_ligege/article/details/132143549
Recomendado
Clasificación