Django:admin后台汉化问题

1、设置admin站点中文显示,即汉化admin后台管理站点。

  • 方法一:修改settings文件
LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

更改为:

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'
  • 方法二:添加中间件(注意:中间件是有顺序的,不要随意更改。)

    添加LocaleMiddleware,按下面的顺序设置即可。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', #支持中文语言
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

2、设置model字段名称汉化

在后台注册数据库后,admin后台才可以实现对models的管理,因此如果想要汉化字段,则需要修改的是model,而不是表单(或其他)。

class Product(models.Model):
id = models.IntegerField('序号',primary_key=True) #第一种方式:在最前面直接写。
name = models.CharField(max_length=50, null=False,verbose_name='名称') #第二种方式:标准写法,用verbose_name字段来定义。
weight = models.CharField(max_length=20, null=True, verbose_name='重量')
size = models.CharField('尺寸', max_length=20, null=True)
type = models.ForeignKey(Type, on_delete=models.CASCADE,verbose_name='类型',) def __str__(self):
return self.name

3、设置model名称汉化

即要汉化数据表名,也就是模型类名。这个需要通过class Meta:中的verbose_name和verbose_name_plural来设置。

class Product(models.Model):
id = models.IntegerField('序号',primary_key=True)
name = models.CharField(max_length=50, null=False,verbose_name='名称')
weight = models.CharField(max_length=20, null=True, verbose_name='重量')
size = models.CharField('尺寸', max_length=20, null=True)
type = models.ForeignKey(Type, on_delete=models.CASCADE,verbose_name='类型',) def __str__(self):
return self.name class Meta:
# 复数形式,如果只设置verbose_name,在Admin会显示为“产品信息s”
verbose_name_plural = "产品信息"
verbose_name = "产品信息"

4、设置app名称汉化

要实现app(这里以index为例)名称的汉化,主要有app中的__init__.py文件实现。

#修改app(index)后台显示名称为中文。

from django.apps import AppConfig
import os #修改app在Admin后台显示的名称 #default_app_config的值来自apps.py的类名
default_app_config = 'index.IndexConfig' #获取当前app的命名
def get_current_app_name(_file):
return os.path.split(os.path.dirname(_file))[-1] #重写类IndexConfig
class IndexConfig(AppConfig):
name = get_current_app_name(__file__)
verbose_name = '网站首页' #这个就是汉化后的名称。
上一篇:django在admin后台注册自己创建的数据库表


下一篇:使用Jmeter进行HTTP接口测试