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 = '网站首页'       #这个就是汉化后的名称。
posted @ 2019-04-19 13:09 张和 阅读(...) 评论(...) 编辑 收藏