settings.py で定義する主なパラメータについて説明します。詳細は下記のリファレンスを参照してください。
プロジェクトのベースフォルダを示します。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
暗号化やハッシュ化で用いられる秘密鍵を指定します。プロジェクト外に公開しないでください。manage.py startproject でプロジェクトを作成する際に、ランダムな値が設定されます。ロードバランサ配下に複数の Django サーバを配置する際には、同じ値を指定してください。
SECRET_KEY = 'pej^q2ql$$#bzg#crh6k_9(p=%p)&6x(kwh@nos&=!$ej&60fh'
デバッグモードの有効(True)、無効(False)を指定します。デバッグモードではエラー発生時にブラウザにエラーの詳細情報を表示します。また、実行した SQL クエリをすべてメモリ上に記憶したり、キャッシュを無効にしたりなど、速度やリソースを犠牲にしてデバッグ向けにカスタマイズされた状態で動作します。API, KEY, PASS, SECRET, SIGNATURE, TOKEN などの秘密にすべきキーワードを含む値は表示されませんが、攻撃に有益な情報を与えてしまうため、本番環境では DEBUG に True を指定してはなりません。
DEBUG = True
サーバが受理するサーバアドレスを指定します。クライアントから送られてきた Host: ヘッダの値と比較され、一致しない場合は 400 エラーを返します。'*' を指定することもできますが、この値を正確に記述することは「Hostヘッダインジェクション攻撃」に対して有効です。
ALLOWED_HOSTS = ['www.example.com',]
アプリケーションの一覧を定義します。データベースのマイグレーションファイル作成の際などに利用されます。
INSTALLED_APPS = [ 'books.apps.BooksConfig', 'django.contrib.admin', : ]
ミドルウェアの一覧を定義します。Django は、HTTP 要求を受け取ったり、HTTP 応答を返却する際に、ここで定義したミドルウェアを順次実行します。
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', : ]
ルートの urls.py を指定します。下記の例では、BASE_DIR 配下の ./config/urls.py を示します。
ROOT_URLCONF = 'config.urls'
テンプレートに関する定義を行います。BACKEND はテンプレートエンジン、DIRS はテンプレートを探す対象のフォルダリスト、APP_DIRS はアプリケーションフォルダ配下を探すか否かのフラグ、OPTIONS には各種オプション情報を定義します。context_processors は、テンプレートで参照可能な変数を生成するプロセッサ群です。
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
WSGI のアプリケーションを指定します。下記は ./config/wsgi.py の中の application を示しています。
WSGI_APPLICATION = 'config.wsgi.application'
データベースに関する定義を行います。SQLite3, MySQL(MariaDB), PostgreSQL, Oracle などを利用可能です。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
パスワードのバリデーションルールを指定します。下記では、ユーザ名と似たパスワード、パスワード長、よくあるパスワード、数値のみのパスワードをチェックしています。
AUTH_PASSWORD_VALIDATORS = [ {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',}, {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',}, {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',}, {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',}, ]
デフォルトの言語を指定します。
LANGUAGE_CODE = 'ja'
言語選択の選択肢として表示する言語を指定します。
LANGUAGES = [ ('ja', _('Japanese')), ('en', _('English')), ]
ロケール情報を格納するフォルダ名を指定します。
LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), )
デフォルトのタイムゾーンを指定します。
TIME_ZONE = 'Asia/Tokyo'
多言語化機能を有効にするか否かを指定します。I18N は internationalisation の略です。
USE_I18N = True
日付フォーマットなどのローカライゼーション機能を有効にするか否かを指定します。L10N は localization の略です。
USE_L10N = True
タイムゾーン変換機能を有効にするか否かを指定します。
USE_TZ = True
スタティックファイルの URL を指定します。
STATIC_URL = '/static/'
スタティックファイルが格納されるディレクトリを指定します。
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )