📜  如何更改 django 管理文本 - Python (1)

📅  最后修改于: 2023-12-03 15:09:09.942000             🧑  作者: Mango

如何更改 Django 管理文本

在 Django 管理后台中,我们可以非常方便地对数据库中的数据进行 CRUD 操作。但在默认情况下,Django 管理后台的文本显示可能无法满足我们的需求,比如显示中文时会出现乱码。

那么,如何更改 Django 管理后台的文本显示呢?下面我们将详细介绍几种常见的方法。

1. 更改模型的字符串表示

Django 中的每个模型都有一个默认的字符串表示方法 __str__,在 Django 管理后台中,如果没有指定 list_display,则默认显示的就是该模型的 __str__ 方法返回的字符串。

因此,如果我们希望在 Django 管理后台中显示自定义的文本,只需要在模型中重载 __str__ 方法即可。比如:

class User(models.Model):
    name = models.CharField('姓名', max_length=50)
    age = models.IntegerField('年龄')

    def __str__(self):
        return f'{self.name}({self.age})'

如果我们使用 Django 的 Admin 后台管理该模型,那么在列表中就会显示出类似 “张三(20)” 的文本。

2. 使用 verbose_name 来设置字段名

在 Django 的模型中,如果没有指定 verbose_nameverbose_name_plural,则 Django 会使用字段名作为默认值。如果我们使用中文字段名,那么就会出现中文乱码的情况。

因此,我们可以通过设置 verbose_nameverbose_name_plural 来解决这个问题。例如:

class User(models.Model):
    name = models.CharField('姓名', max_length=50)
    age = models.IntegerField('年龄')

    class Meta:
        verbose_name = '用户'
        verbose_name_plural = '用户'

这样,在 Django 管理后台中就可以正常显示中文了。

3. 使用 i18n 国际化工具

有时候,我们需要在 Django 管理后台中显示的文本非常多,一个个手动设置 verbose_name 又很麻烦,这时我们可以使用 Django 自带的国际化工具 i18n 来自动化操作。

首先,在 settings.py 文件中设置语言:

# settings.py
LANGUAGES = [
    ('en-us', 'English'),
    ('zh-hans', '简体中文'),
]

LANGUAGE_CODE = 'zh-hans'

接下来,在模型中使用 ugettext 函数来设置字段名:

from django.utils.translation import ugettext_lazy as _

class User(models.Model):
    name = models.CharField(_('姓名'), max_length=50)
    age = models.IntegerField(_('年龄'))

这样,当我们访问 Django 管理后台时,系统会自动根据设置的语言来显示相应的文本。

结语

通过以上三种方法,我们可以轻松地更改 Django 管理后台的文本显示,让它满足我们的需求。