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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM