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 = \'网站首页\' #这个就是汉化后的名称。