読者です 読者をやめる 読者になる 読者になる

settings.configure

Django

Djangoのソースコードを読んでいて、settings(django.conf.LazySettings)オブジェクトにconfigureというメソッドがあることを知った。・・・改めて確認すると、ちゃんとオフィシャルのドキュメントにもあった。
これを使うと、環境変数DJANGO_SETTINGS_MODULEを定義しなくてもsettingsを使える。


環境変数DJANGO_SETTINGS_MODULEを未定義でdjango.conf.settingsにアクセスするとImportErrorになる。

>>> from django.conf import settings
>>> settings.DEBUG
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  # ...省略
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.


先にconfigureを読んでおくと、django.conf.global_settingsで定義されたデフォルトの値にアクセスできる。

>>> from django.conf import settings
>>> settings.configure()
>>> settings.DEBUG
False


ユーザ定義の設定でデフォルトの値を上書きしたい場合は、configureメソッドのキーワード引数に指定する。

>>> from django.conf import settings
>>> settings.configure(TIME_ZONE='Asia/Tokyo', LANGUAGE_CODE='ja-jp', DEBUG=True)
>>> settings.DEBUG
True
>>> settings.TIME_ZONE
'Asia/Tokyo'
>>> settings.LANGUAGE_CODE
'ja-jp'