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 = '網站首頁' #這個就是漢化后的名稱。