Django の管理画面
Django は Python で作られている Web フレームワークです。ちょっとした Web システムを組むときは Flask を利用したりしますが、大きめのシステムだと Django を利用した方がいいでしょう。その Django には標準の管理画面が用意されています。管理画面をゼロから用意するのは大変ですので、そのベースがあるのは大変助かります。しかし、この管理画面は標準では英語表記です。管理者が英語を毛嫌いしていれば却下されてしまいます。今回はこの Django の管理画面を日本語化する方法を紹介します。
説明するにはそのベースが必要になるので、今回は Django 4.0.2 での「チュートリアルその7」まで終わっている状態のプロジェクトを元に紹介します。
https://docs.djangoproject.com/ja/4.0/intro/tutorial07/
このとき管理画面は次のように表示されています。
0. 管理画面の日本語化
まずは基本的な項目になりますが、管理画面を日本語化しましょう。これはプロジェクトフォルダにある settings.py を編集します。
編集するのは、「 LANGUAGE_CODE 」です。これを「 ja 」にしましょう。またついでに「 TIME_ZONE 」も日本標準時に変更しておくといいでしょう。
mysite/setting.py
LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo'これにより次のように表示されます。多くの箇所が日本語化されたことが判ります。
残りの箇所は、それぞれ以下の番号の対応が必要になります。
1. アプリ名の日本語化
Django には複数のアプリを追加しますが、そのアプリ名を日本語表示させましょう。それには apps.py の PollsConfig クラスを編集します。 PollsCpnfig クラスは AppConfig クラスを継承しており、この AppConfig は verbose_name 変数を持っています。この verbose_name が表示する名前になります。
polls/apps.py
class PollsConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'polls' verbose_name = '世論調査'
2. モデル名の日本語化
次は Question モデルを日本語化します。それには Question クラス内に Meta クラスを用意します。そして Meta クラスに verbose_name をセットします。また verbose_name だけだと、所々「 質問s 」のように英語の複数形を示す「 s 」が付いて表示されます。そのため日本語の場合は verbose_name_plural にも同じ値をセットするといいでしょう。
polls/models.py
class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('Date Published') def __str__(self): return self.question_text @admin.display( boolean=True, ordering='pub_date', description='Published recently?', ) def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) class Meta: verbose_name = '質問' verbose_name_plural = '質問'
3. 項目名の日本語化
リストのカラム名にも表示される項目を日本語化します。それぞれ設定方法が異なるので注意が必要です。モデルのフィールドに相当する CharField では引数の verbose_name に値をセットします。 DateTimeField でも同様ですが、第 1 引数が verbose_name であるため、 models.DateTimeField(‘発行日’) としても大丈夫です。
また was_published_recently メソッドについては管理画面で表示する設定が @admin.display で行われているので、その description に値をセットします。
polls/models.py
class Question(models.Model): question_text = models.CharField(max_length=200, verbose_name='質問') pub_date = models.DateTimeField('発行日') def __str__(self): return self.question_text @admin.display( boolean=True, ordering='pub_date', description='最近?', ) def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) class Meta: verbose_name = '質問' verbose_name_plural = '質問'
上記 1, 2, 3 を設定すると、次のように表示されます。
まとめ
今回は、 Django の管理画面日本語化を紹介しました。設定が必要な個所は様々ですが、全て設定することができました。今回紹介した以外にも、追加項目などの日本語化もありますが、それらにも設定方法が備わっています。管理画面をゼロから用意するのは大変なので、標準で備わっている Django の管理画面を編集するのがいいでしょう。ぜひフル活用してください。