Django の設定

revision-up-to:7238 (0.97pre SVN)

Django の設定ファイルには、インストールした Django の使う全ての設定が入って います。このドキュメントでは、各設定の役割と、どのような設定を利用できるか について説明します。

基礎

設定ファイルはモジュールレベルの変数の入った単なる Python モジュールです。

設定の例をいくつか示します:

DEBUG = False
DEFAULT_FROM_EMAIL = 'webmaster@example.com'
TEMPLATE_DIRS = ('/home/templates/mike', '/home/templates/john')

設定ファイルは Python モジュールなので、以下のような性質を備えています:

  • Python の構文エラーが入っていてはなりません。

  • 通常の Python 構文を使って動的に値を設定できます。例えば:

    MY_SETTING = [str(i) for i in range(30)]
    
  • 他の設定ファイルから値を import できます。

設定ファイルの特定

Django を使う場合、どの設定を使っているのかを Django に教えなければなりませ んが、これには環境変数 DJANGO_SETTINGS_MODULE を使います。

DJANGO_SETTINGS_MODULE は Python のモジュールパス構文、たとえば mysite.settings のようにします。設定モジュールは Python の モジュール検索パス になければなりません。

django-admin.py ユーティリティ

django-admin.py を使う場合、環境変数をあらかじめ指定しておくか、ユーティ リティを起動する度に設定モジュールを明示的に渡します。

例 (Unix Bash シェル):

export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver

例 (Windows コマンドプロンプト):

set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver

コマンドライン引数で設定モジュールを指定するには --settings を使います。

django-admin.py runserver --settings=mysite.settings

サーバ (mod_python) の設定

実際のサーバ環境では、 Apache/mod_python にどの設定モジュールを使うのか教え る必要があります。これには SetEnv を使います:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
</Location>

詳しくは mod_python で Django を使うためのドキュメント を参照してくださ い。

デフォルトの設定

Django の設定ファイルでは、特に必要のない限り設定をおこなう必要はありません。 各々の設定には注意深く決められたデフォルト値が入っています。デフォルト値は django/conf/global_settings.py ファイルに収められています。

Django が設定をコンパイルする際には、以下のようなアルゴリズムを使います:

  • global_settings.py から設定を読みだします。
  • 指定の設定ファイルから設定を読み出し、グローバルな設定をオーバライド します。

設定ファイルから global_setting を import するのは冗長であり、 やってはなりません

変更結果を確かめる

デフォルトの設定と自分の設定の違いを確かめる簡単な方法があります。 python manage.py diffsettings を実行すると、現在の設定と Django のデフォ ルト設定との違いを表示します。詳しくは diffsettings のドキュメント を参 照してください。

Python コード内で設定を参照する

自作の Django アプリケーションから設定を参照するには、 django.conf モ ジュールから settings オブジェクトを import します:

from django.conf import settings

if settings.DEBUG:
    # Do something

django.conf.settings はモジュールではなくオブジェクトです。このため、 個々の設定は別々に import できません:

from django.conf.settings import DEBUG  # これではうまく動かない

また、 global_settings や自作の設定ファイルを直接 import しては ならない ので注意して下さい。 django.conf.settings はデフォルト設定と サイト固有の設定を抽象化しており、単一のインタフェースで設定を提供するとと もに、設定を使うコードとユーザの設定ファイルの置き場所とを脱カップリングし ています。

実行時に設定を変更する

実行時に設定を変更してはなりません。たとえば、ビューの中で以下のような操作 を行ってはなりません:

from django.conf import settings

settings.DEBUG = True   # やってはダメ!

設定を書いてよいのは設定ファイルの中だけです。

セキュリティ

設定ファイルにはデータベースのパスワードのような重要な情報が入っているので、 設定ファイルへのアクセスはできるだけ制限してください。例えば、設定ファイル のパーミッションを、Web サーバを駆動しているユーザとあなただけが読み書きで きるように変更してください。共有ホスティング環境で運用するような場合、これ は極めて重要な事項です。

利用可能な設定

以下に、利用可能な全ての設定のリストを示します。リストはアルファベット順で、 デフォルト値も示します。

ABSOLUTE_URL_OVERRIDES

デフォルト値: {} (空の辞書)

モデルオブジェクトのパスを表す文字列 "app_label.model_name" から、モデ ルオブジェクトを引数にとり URL を返すような関数への対応づけを行うための辞書 です。 Django で作成したプロジェクトのインストール先ごとに get_absolute_url() メソッドを上書きするのに役立ちます。例えば:

ABSOLUTE_URL_OVERRIDES = {
    'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
    'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}

もとのモデルクラス名で使っている文字ケースに関係なく、モデル名は小文字にせ ねばならないので注意してください。

ADMIN_FOR

デフォルト値: () (空のタプル)

admin 用サイトの設定モジュールで設定します。このサイトの admin を他のサイト の admin にする場合、設定モジュールを ('foo.bar.baz' の形式のタプルで) 指定します。

admin サイトはこの変数を使って、モデルやビュー、テンプレートタグのドキュメ ントに対するイントロスペクションを自動的に行います。

ADMIN_MEDIA_PREFIX

デフォルト値: '/media/'

admin メディア (CSS, JavaScript, 画像) への URL プレフィクスです。必ず 末尾にスラッシュをつけてください。

ADMINS

デフォルト値: () (空のタプル)

コード中で発生したエラーを報告する連絡先を列挙するタプルです。 DEBUG=False の設定で、ビューが例外を送出すると、 Django はこの設定値に 列挙されている相手全てに全ての例外情報の入った通知メールを送ります。タプル に入れる各メンバは、 (Full name, e-mail address) の形式で指定します。例えば:

(('John', 'john@example.com'), ('Mary', 'mary@example.com'))

Django はエラーが生じたときに、このリストに登録されている 全ての 宛先にメー ルを送信します。詳しくは 電子メールによるエラー通知 を参照してください。

ALLOWED_INCLUDE_ROOTS

デフォルト値: () (空のタプル)

{% ssi %} テンプレートタグで取り込める URL のプレフィクスを表す文字列か らなるタプルです。この設定はセキュリティを高めるためのもので、テンプレート の作者に取り込みを禁じられているファイルにアクセスさせないようにします。

例えば、 ALLOWED_INCLUDE_ROOTS('/home/html', '/var/www') にして おくと、 {% ssi /home/html/foo.txt %} は期待通りに動作しますが、 {% ssi /etc/passwd %} はうまくいきません。

APPEND_SLASH

デフォルト値: True

URL の末尾に常にスラッシュを追加するかどうかを決めます。 CommonMiddleware がインストールされている場合にしか使われません。 (ミドルウェアのドキュメント を参照してください。) PREPEND_WWW も参 照してください。

AUTHENTICATION_BACKENDS

デフォルト値: ('django.contrib.auth.backends.ModelBackend',)

認証バックエンドのクラス名を (文字列で) 列挙したタプルです。ユーザ認証を試 みる際に使われます。詳しくは`認証バックエンドのドキュメント`_ を参照してく ださい。

AUTH_PROFILE_MODULE

デフォルト値: 定義されていません

サイト固有のユーザプロファイルモデルです。詳しくは ユーザプロファイルモデルのドキュメント を参照してください。

CACHE_BACKEND

デフォルト値: 'simple://'

利用するキャッシュバックエンドを指定します。 キャッシュのドキュメント を 参照してください。.

CACHE_MIDDLEWARE_KEY_PREFIX

デフォルト値: '' (空文字列)

キャッシュミドルウェアが使うキャッシュキープレフィクスを指定します。 キャッシュのドキュメント を参照してください。.

CACHE_MIDDLEWARE_SECONDS

デフォルト値: 600

キャッシュミドルウェアや cache_page() デコレータを使うときに、ページを キャッシュしておく秒数のデフォルト値です。

DATABASE_ENGINE

デフォルト値: '' (空文字列)

どのデータベースバックエンドを使うかを指定します。組み込みのデータベースバッ クエンドは、 'postgresql_psycopg2', 'postgresql', 'mysql', 'mysql_old', 'sqlite3', 'oracle', および 'ado_mssql' です。

DATABASE_HOST

デフォルト値: '' (空文字列)

データベース接続先のホストを指定します。空にしておくと localhost になります。 SQLite では使いません。

この変数がスラッシュ ('/') で始まっていて、 MySQL を使っている場合、 MySQL は指定された Unix ソケットを介して接続します。例えば:

DATABASE_HOST = '/var/run/mysql'

のように指定します。 MySQL を使っていて、この変数がスラッシュで始まっていな い場合には、この変数はホスト名として扱われます。

PostgreSQL を使っている場合、 DATABASE_HOST に空文字列を指定すると、 Unix ドメインソケットを使った接続を意味します。ローカルホストに対する TCP/IP 接続を指定したければ localhost と指定してください。

DATABASE_NAME

デフォルト値: '' (空文字列)

データベースの名前です。 SQLite の場合は、データベースファイルへのフルパス です。

DATABASE_OPTIONS

デフォルト値: {} (空の辞書)

データベースに接続するときの追加のパラメタです。利用できるキーワードは個々 のバックエンドモジュールのドキュメントを参照してください。

DATABASE_PASSWORD

デフォルト値: '' (空文字列)

データベースに接続するときのパスワードです。SQLite では使いません。

DATABASE_PORT

デフォルト値: '' (空文字列)

データベースに接続するときのポート番号です。空文字を指定するとデフォルトの ポートを使います。SQLite では使いません。

DATABASE_USER

デフォルト値: '' (空文字列)

データベースに接続するときのユーザ名です。SQLite では使いません。

DATE_FORMAT

デフォルト値: 'N j, Y' (e.g. Feb. 4, 2003)

Django の admin サイトの変更履歴ページ (や、システムの他の部分で) 日付フィー ルドの表示に使うデフォルトのフォーマットです。 利用可能な日付フォーマット文字 を参照してください。

DATETIME_FORMAT , TIME_FORMAT , YEAR_MONTH_FORMAT および MONTH_DAY_FORMAT も参照してください。

DATETIME_FORMAT

デフォルト値: 'N j, Y, P' (e.g. Feb. 4, 2003, 4 p.m.)

Django の admin サイトの変更履歴ページ (や、システムの他の部分で) 日時フィー ルドの表示に使うデフォルトのフォーマットです。 利用可能な日時フォーマット文字 を参照してください。

DATE_FORMAT , TIME_FORMAT , YEAR_MONTH_FORMAT および MONTH_DAY_FORMAT も参照してください。

DEBUG

デフォルト値: False

デバッグモードのオンオフを切替えるブール値です。

settings に自作の設定項目を追加する場合、django/views/debug.py の HIDDEN_SETTINGS に注意してください。この変数は正規表現になっていて、デ フォルトでは 'SECRET', 'PASSWORD', 'PROFANITIES' といった文字列 を含む全ての設定の DEBUG ビューへの表示を抑制して、信頼されていないユーザが バックトレースから重要な (あるいは攻撃的な) 設定項目を見なくてすむようにし ているからです。

また、デバッグ出力の様々な情報は、いついかなる状況でも衆目に晒すべきもので はないということを心得ておきましょう。ファイルパス、各設定項目などは、攻撃 者に対してサーバの様々な情報を与えてしまいます。決して DEBUG をオンにし たままサーバを運用しないでください。

DEFAULT_CHARSET

デフォルト値: 'utf-8'

全ての HttpResponse オブジェクトで、MIME タイプを手動で指定しなかった場 合に使われるデフォルトの文字セットです。 Content-Type ヘッダの生成時に DEFAULT_CONTENT_TYPE とともに使われます。

DEFAULT_CONTENT_TYPE

デフォルト値: 'text/html'

全ての HttpResponse オブジェクトで、MIME タイプを手動で指定しなかった場 合に使われるデフォルトのコンテンツタイプです。 Content-Type ヘッダの生 成時に DEFAULT_CHARSET とともに使われます。

DEFAULT_FROM_EMAIL

デフォルト値: 'webmaster@localhost'

サイト管理者からのさまざまな自動応答で使われるデフォルトの e-mail アドレス です。

DEFAULT_TABLESPACE

開発版の Django で新たに追加された機能です

デフォルト値: '' (空文字列)

テーブルスペース名を明示していないモデルに使われるテーブルスペース 名です。バックエンドがサポートしている場合に限って有効です。

DEFAULT_INDEX_TABLESPACE

開発版の Django で新たに追加された機能です

デフォルト値: '' (空文字列)

テーブルスペース名を明示していないフィールドインデクスに使われるテーブルス ペース名です。バックエンドがサポートしている場合に限って有効です。

DISALLOWED_USER_AGENTS

デフォルト値: () (空のタプル)

システム全体にわたり、ページの閲覧を許さないクライアントの User-Agent を表 すコンパイル済みの正規表現オブジェクトからなるリストです。相手にしたくない ロボットやクローラがいる場合に使って下さい。この設定は CommonMiddleware がインストールされている場合にしか使われません。 (ミドルウェアのドキュメント を参照してください)。

EMAIL_HOST

デフォルト値: 'localhost'

e-mail の送信に使われるホスト名です。

EMAIL_PORT も参照してください。

EMAIL_HOST_PASSWORD

デフォルト値: '' (空文字列)

EMAIL_HOST に指定した SMTP サーバにアクセスする際のパスワードです。この 設定は EMAIL_HOST_USER と組み合わせて、 SMTP サーバの認証に使われます。 EMAIL_HOST_USEREMAIL_HOST_PASSWORD のどちらかが空文字列の場合、 Django は SMTP への認証を試みません。

EMAIL_HOST_USER も参照してください。

EMAIL_HOST_USER

デフォルト値: '' (空文字列)

EMAIL_HOST で定義されている SMTP サーバへのアクセスに使われるユーザ名で す。空文字列の場合、 Django は SMTP への認証を試みません。

EMAIL_HOST_PASSWORD も参照してください。

EMAIL_PORT

デフォルト値: 25

EMAIL_HOST で定義されている SMTP サーバのポート番号です。

EMAIL_SUBJECT_PREFIX

デフォルト値: '[Django] '

django.core.mail.mail_adminsdjango.core.mail.mail_managers が送 信するメールの題名に使われるプレフィクスです。末尾にはスペースを入れておいた 方がよいでしょう。

EMAIL_USE_TLS

開発バージョンの Django で新たに追加されました

デフォルト値: False

SMTP サーバとの通信に TLS (安全な接続) を使うかどうかを指定します。

FILE_CHARSET

開発バージョンの Django で新たに追加されました

デフォルト値: 'utf-8'

テンプレートファイルや SQL のデータファイルなどのファイルをファイルシステム から読み出すときに使う文字エンコーディングです。

FIXTURE_DIRS

デフォルト値: () (空のタプル)

フィクスチャデータファイルの検索対象ディレクトリを順に挙げたリストです。 パスの表記は (Windows 環境でも) Unix 形式の前向きスラッシュにせねばなりませ ん。 Django アプリケーションのテスト も参照してください。

IGNORABLE_404_ENDS

デフォルト値: ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')

IGNORABLE_404_STARTS電子メールによるエラー通知 も参照してくだ さい。

IGNORABLE_404_STARTS

デフォルト値: ('/cgi-bin/', '/_vti_bin', '/_vti_inf')

404 通知 e-mail を使っている場合、このタプルに指定した文字列から始まる URL は無視されます。 SEND_BROKEN_LINK_EMAILS, IGNORABLE_404_ENDS および 電子メールによるエラー通知 も参照してくだ さい。

INSTALLED_APPS

デフォルト値: () (空のタプル)

現在の Django インストール下で有効にしたい全てのアプリケーションを表す文字 列のタプルです。各文字列は、 django-admin.py startapp で作成した Django アプリケーションの入った Python パッケージを示す完全な Python パスでなけれ ばなりません。

INTERNAL_IPS

デフォルト値: () (空のタプル)

文字列で表した IP アドレスのタプルです。

  • DEBUGTrue の場合、デバッグコメント中に表示されます。
  • XViewMiddleware がインストールされている場合、X ヘッダを受信しま す。(ミドルウェアのドキュメント も参照してください。)

JING_PATH

デフォルト値: '/usr/bin/jing'

"Jing" 実行形式へのパスです。 Jung は RELAX NG バリデータで、 Django はモデ ルの XMLField のバリデーションに "Jing" を使います。

http://www.thaiopensource.com/relaxng/jing.html を参照してください。

LANGUAGE_CODE

デフォルト値: 'en-us'

現在の Django インストールにおける言語コード文字列です。この値は標準の言語 指定形式にせねばなりません。たとえば U.S. English は "en-us" にします。 国際化のドキュメント も参照してください。

LANGUAGE_COOKIE_NAME

開発版の Django で新たに追加された機能です

デフォルト値: 'django_language'

言語情報を記憶するために使うクッキーの名前です。 SESSION_COOKIE_NAME の設定値と同じでなければ、どんな名前にしてもかまいません。詳しくは 国際化のドキュメント を参照してください。

LANGUAGES

デフォルト値: 利用可能な言語からなるタプルです。このリストには頻繁に新たな 言語が登場しているので、そのコピーをここに記載していてもすぐに古い情報になっ てしまいます。現在サポートされている言語のリストは手元のソースコード中の django/conf/global_settings.py (または オンラインのソースコード) を 参照してください。

このリストは、例えば ('ja', 'Japanese') のように、 (言語コード, 言語名) の 形式のタプルでできており、国際化機能で選択可能な言語を指定するために使いま す。詳しくは 国際化のドキュメント を参照してください。

一般に、デフォルト値をいじる必要はありません。Django が提供している言語セッ トの選択肢を狭めたい場合のみ設定してください。

カスタムの LANGUAGE 設定を定義する場合、(上の例に示したように) 各言語を 翻訳文字列として定義してかまいませんが、 django.utils.translationgettext() 関数ではなく、「ダミーの」 gettext() を使うようにしてくだ さい。設定ファイル内では 決して django.utils.translation を import し ないでください。このモジュールは settings の内容に依存しているため、循環 import を引き起こしてしまうからです。

解決方法は、上でも述べたように「ダミーの」 gettext() を使うというもので す。以下に設定ファイルの例を示します:

gettext = lambda s: s

LANGUAGES = (
    ('de', gettext('German')),
    ('en', gettext('English')),
)

このような書き方をした場合、 make-messages.py は翻訳対象文字列をきち んと取り出せます。しかし、実行時に翻訳は行われません。従って、実行時に LANGUAGES を使うようなコードでは、 本当の gettext() を使って 言語名をラップするようにしてください。

LOCALE_PATHS

デフォルト値: () (空のタプル)

Django が翻訳ファイルを探しに行く場所を指定するためのタプルです。 この変数の詳細とデフォルトの動作については、 国際化ドキュメントの節 を 参照してください。

LOGIN_REDIRECT_URL

開発バージョンの Django で新たに追加されました

デフォルト値: '/accounts/profile/'

controb.auth.login ビューに next パラメタが指定されていない場合の、 デフォルトのリダイレクト先 URL です。

@login_required デコレータを利用するときなどに使う設定です。

LOGIN_URL

開発バージョンの Django で新たに追加されました

デフォルト値: '/accounts/login/'

@login_required デコレータを利用するときなどに、ログインページへのリダイ レクト先として使う設定です。

LOGOUT_URL

開発バージョンの Django で新たに追加されました

デフォルト値: '/accounts/logout/'

LOGIN_URL の対極にあたる、ログアウトページへのリダイレクト URL です。

MANAGERS

デフォルト値: () (空のタプル)

ADMINS と同じ形式のタプルで、 SEND_BROKEN_LINK_EMAILS=True の時に壊 れたリンクの通知を受けるメンバを指定します。

MEDIA_ROOT

デフォルト値: '' (空文字列)

現在の Django インストールにおいて、メディアファイルを収めているディレクト リへの絶対パスです。例えば "/home/media/media.lawrence.com/" です。 MEDIA_URL も参照してください。

MEDIA_URL

デフォルト値: '' (空文字列)

MEDIA_ROOT で提供されているメディアファイルを扱う URL です。例えば "http://media.lawrence.com" です。

URL にパス部を含める場合、末尾はスラッシュにせねばなりません。

良い例: "http://www.example.com/static/" 悪い例: "http://www.example.com/static"

MIDDLEWARE_CLASSES

デフォルト値:

("django.contrib.sessions.middleware.SessionMiddleware",
 "django.contrib.auth.middleware.AuthenticationMiddleware",
 "django.contrib.auth.middleware.AuthenticationMiddleware",
 "django.middleware.common.CommonMiddleware",
 "django.middleware.doc.XViewMiddleware",
)

利用するミドルウェアクラスの Python パス名からなるタプルです。 ミドルウェアのドキュメント も参照してください。.

MONTH_DAY_FORMAT

デフォルト値: 'F j'

Django の admin サイトにおける変更リストの日付フィールドの他、システムの各 所で月と日だけを表示する際に使われるデフォルトのフォーマットです。

例えば、 Django の admin サイトにおける変更リストページを日付による絞り込み でフィルタする場合、指定日のヘッダには日と月が表示されます。ロケールによっ ては異なったフォーマットになります。例えば、 U.S. English での "January 1" は、スペイン語では "1 Enero." になります。

利用可能な日時フォーマット文字 を参照してください。 DATE_FORMAT, DATETIME_FORMAT , TIME_FORMAT , YEAR_MONTH_FORMAT も参照してください。

PREPEND_WWW

デフォルト値: False

URL にサブドメイン名 "www." が付いていない場合に付加するかどうかを決めます。 CommonMiddleware がインストールされている場合にのみ使われる設定です (ミドルウェアのドキュメント を参照してください)。 APPEND_SLASH も参 照してください。

PROFANITIES_LIST

非道徳的な言葉 (profanity) のタプルです。 hasNoProfanities バリデータが 呼び出された際に、エラーを引き起こす単語のリストに使われます。

デフォルト値はここでは示しません。不道徳な言葉が入っているからです。デフォ ルト値を見たければ、 django/conf/global_settings.py を参照してください。

ROOT_URLCONF

デフォルト値: 定義されていません

ルート URLconf への完全な Python import パスを表す表す文字列です。例えば、 "mydjangoapps.urls" です。 Django のリクエスト処理 を参照してくださ い。

SECRET_KEY

デフォルト値: '' (空文字列)

Django インストール毎に固有の秘密の鍵です。秘密鍵を使ったハッシュアルゴリズ ムのシードを生成するために使います。この値はランダムな文字列に指定してくだ さい。長ければ長いほど好ましくなります。 django-admin.py startproject を実行すると、自動的に値を生成します。

SEND_BROKEN_LINK_EMAILS

デフォルト値: False

Django で作られたページに訪問した人が、リファラが空でないにも関わらず 404 に遭遇した (すなわち、リンクが壊れていた) 場合に、 MANAGERS に e-mail を 送信するかどうかを決めます。この設定は CommonMiddleware がインストール されている場合にしか使われません。(ミドルウェアのドキュメント を参照して ください。) IGNORABLE_404_STARTS, IGNORABLE_404_ENDS および 電子メールによるエラー通知 も参照してくだ さい。

SERIALIZATION_MODULES

デフォルト値: 定義されていません

シリアライザのモジュールパスを (文字列) 指定した辞書です。辞書のキーはシリ アライザの識別名にします。例えば、 YAML のシリアライザを定義するには以下の ようにします:

SERIALIZATION_MODULES = { 'yaml' : 'path.to.yaml_serializer' }

SERVER_EMAIL

デフォルト値: 'root@localhost'

ADMINSMANAGERS にエラーメッセージを送信するときの送信元の e-mail アドレスです。

SESSION_ENGINE

開発版の Django で新たに追加された機能です

デフォルト値: django.contrib.sessions.backends.db

Django がセッションデータを保存する方法を指定します。利用できる値は以下の通 りです:

  • 'django.contrib.sessions.backends.db'
  • 'django.contrib.sessions.backends.file'
  • 'django.contrib.sessions.backends.cache'

詳しくは セッションのドキュメント を参照してください。

SESSION_COOKIE_AGE

デフォルト値: 1209600 (秒単位で 2 週間)

セッションクッキーの寿命を秒で表したものです。 セッションのドキュメント も参照してください。

SESSION_COOKIE_DOMAIN

デフォルト値: None

セッションクッキーを使うドメインです。クロスドメインのクッキーを使う場合に は ".lawrence.com" といった値に、通常のドメイン内クッキーの場合には None を指定します。 セッションのドキュメント も参照してください。

SESSION_COOKIE_NAME

デフォルト値: 'sessionid'

セッションに使うクッキーの名前です。 LANGUAGE_COOKIE_NAME の値と同じで なければ、どんな名前にしてもかまいません。 セッションのドキュメント も参 照してください。

SESSION_COOKIE_PATH

開発版の Django で新たに追加された機能です

デフォルト値: '/'

セッションクッキーをセットするパスです。 Django インスタンスの URL パスか、 その上の階層の URL パスでなければなりません。

この設定は、同じホスト名の下で、複数の Django インスタンスが稼働している場 合に便利です。サイト毎に別々のクッキーパスを指定でき、その場合には各サイト のインスタンスが固有のセッションクッキーを参照するようになります。

SESSION_COOKIE_SECURE

デフォルト値: False

セッションクッキーにセキュアなクッキーを使うかどうかを決めます。この値を True に設定すると、クッキーは "セキュア" にマークされます。クッキーがセ キュアにマークされると、ブラウザによっては HTTPS 接続でのみクッキーを転送す るようになります。詳しくは セッションのドキュメント を参照してください。

SESSION_EXPIRE_AT_BROWSER_CLOSE

デフォルト値: False

ブラウザを閉じたときにセッションを期限切れにするかどうかを決めます。 セッションのドキュメント を参照してください。

SESSION_FILE_PATH

開発版の Django で新たに追加された機能です

デフォルト値: /tmp/

ファイルベースのセッションストレージを使っている場合、この値でセッションデー タの保存場所を指定します。詳しくは セッションのドキュメント を参照してく ださい。

SESSION_SAVE_EVERY_REQUEST

デフォルト値: False

リクエストごとにセッションデータを保存するかどうかを決めます。 セッションのドキュメント も参照してください。

SITE_ID

デフォルト値: 定義されていません

django_sites データベース中で現在のサイトを示す ID の整数値です。この値 は、アプリケーションデータが特定のサイトに対してフックできるようにし、一つ のデータベースで複数のサイトのコンテンツを管理できるようにするためのもので す。

sites のドキュメント を参照してください。

TEMPLATE_CONTEXT_PROCESSORS

デフォルト値:

("django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media")

RequestContext のコンテキストに値を入れてゆく際に使われる呼び出し可能オ ブジェクトからなるタプルです。これらの呼び出し可能オブジェクトはリクエスト オブジェクトを引数にとり、コンテキストに統合する項目からなる辞書を返します。

TEMPLATE_DEBUG

デフォルト値: False

テンプレートのデバッグモードのオンオフを切替えるブール値です。この値を True にすると、 TemplateSyntaxError を報告する際にファンシーなエラー ページを出力します。この報告にはエラーに関係するテンプレートの一部分が表示 され、問題のある部分がハイライト表示されます。

Django は DEBUGTrue の場合にのみエラーページを表示するので、こ の設定の恩恵をうけたければ DEBUG を設定しておく必要があります。

DEBUG も参照してください。

TEMPLATE_DIRS

デフォルト値: () (空のタプル)

テンプレートソースファイルの入っている場所を検索順に並べたリストです。パス の区切りには Windows であっても Unix 形式のスラッシュを使って下さい。

テンプレートのドキュメント も参照してください。.

TEMPLATE_LOADERS

デフォルト値:

('django.template.loaders.filesystem.load_template_source',
 'django.template.loaders.app_directories.load_template_source',
)

様々なソースからのテンプレートの import を実装している、呼び出し可能オブジェ クト (を指す文字列) のタプルです。 テンプレートのドキュメント も参照して ください。.

TEMPLATE_STRING_IF_INVALID

デフォルト値: '' (空文字列)

誤った (スペルを間違えたなど) 変数名に対してテンプレートシステムが出力する 文字列です。 無効な変数の扱い を参照してください。

TEST_DATABASE_CHARSET

開発バージョンの Django で新たに追加されました

デフォルト値: None

テストデータベースの作成に使われている文字セットエンコーディングです。この 文字列の値はデータベースバックエンドに直接渡されるので、エンコーディングの 名前や書式はバックエンドごとに異なります。

この設定をサポートしているバックエンドは、 PostgreSQL (postgresql, postgresql_psycopg2) と MySQL (mysql, mysql_old) です。

TEST_DATABASE_COLLATION

開発バージョンの Django で新たに追加されました

デフォルト値: None

テストデータベースを生成する際のコレーション (collation) です。この値はデー タベースバックエンドに直接渡されるので、値の書式はバックエンドごとに異なり ます。

mysql および mysql_old バックエンドだけでサポートされています (くわしくは、MySQLマニュアルの section 10.3.2 を参照してください)

TEST_DATABASE_NAME

開発バージョンの Django で新たに追加されました。

デフォルト値: None

テストスイートを実行するときに使うデータベースの名前です。

データベースエンジンが SQLite のときにデフォルト値 (None) を指定すると、 テストのためのデータベースはメモリ上に展開されます。他のデータベースエンジ ンの場合、テストデータベースの名前として 'test_' + settings.DATABASE_NAME を使います。

Django アプリケーションのテスト を参照してください。

TEST_RUNNER

デフォルト値: 'django.test.simple.run_tests'

テストスイートを起動するためのメソッドの名前です。 Django アプリケーションのテスト を参照してください。

TIME_FORMAT

デフォルト値: 'P' (e.g. 4 p.m.)

Django の admin サイトの変更履歴ページ (や、システムの他の部分で) 時刻フィー ルドの表示に使うデフォルトのフォーマットです。 利用可能な時刻フォーマット文字 を参照してください。

DATE_FORMAT , DATETIMETIME_FORMAT , YEAR_MONTH_FORMAT および MONTH_DAY_FORMAT も参照してください。

TIME_ZONE

デフォルト値: 'America/Chicago'

現在の Django インストールが使うタイムゾーンを表す文字列です。 利用可能な選択肢 を参照してください。 (利用可能な選択肢には、同じ行に複数の選択肢をリストしていることに注意してく ださい。あるタイムゾーンを表すにはいずれか一つを選ぶことになります。例えば、 ある行に 'Europe/London GB GB-Eire' と書かれている場合、 TIME_ZONE の設定には、最初の部分である 'Europe/London' だけを使います)

この値は Django が全ての日付/時刻の変換に使うタイムゾーンであり、かならずし もサーバのタイムゾーンとは一致しないことに注意して下さい。例えば、一つのサー バで複数の Django サイトを運営し、個々に別々のタイムゾーン設定を持たせても かまいません。

通常、 Django は TIME_ZONE の設定に従って os.environ['TZ'] 変数を設 定します。そのため、ビューやモデルは自動的に正しいタイムゾーンを扱えるよう になります。しかしながら、後述の手動設定オプションを使っている場合 (下参照)、 Django は TZ 環境変数を 操作しない ので、ユーザは自分の責任でプロセス を正しい環境の下で動作させねばなりません。

Note

Windows 環境では、 Django は信頼性のある方法でタイムゾーンを変更できま せん。 Windows で Django を動作させる場合、この変数はシステムのタイムゾー ンと一致させねばなりません。

URL_VALIDATOR_USER_AGENT

デフォルト値: Django/<version> (http://www.djangoproject.com/)

特定の URL が実在するかを Django が調べにゆく際に使う User-Agent ヘッダ の値です。 (URLFieldverify_exists を参照してください。)

USE_ETAGS

デフォルト値: False

出力に "Etag" ヘッダを含めるかどうかを決めるブール値です。 "Etag" を含める と帯域の節約になりますが、パフォーマンスは低下します。この設定は CommonMiddleware がインストールされている場合にしか使われません。 (ミドルウェアのドキュメント を参照してください。)

USE_I18N

デフォルト値: True

国際化システムを有効にするかどうかを決めるブール値です。この設定を使うと、 パフォーマンス向上のために簡単に国際化システムを無効化できます。 この値を False にすると、 Django は国際化機構をロードしないような最適化 を行います。

YEAR_MONTH_FORMAT

デフォルト値: 'F Y'

Django の admin サイトの変更履歴ページ (や、システムの他の部分で) 日時フィー ルドの表示に使うデフォルトのフォーマットです。

Django の admin サイトにおける変更リストの日付フィールドの他、システムの各 所で月と日だけを表示する際に使われるデフォルトのフォーマットです。

例えば、 Django の admin サイトにおける変更リストページを日付による絞り込み でフィルタする場合、指定月のヘッダには月と年が表示されます。ロケールによっ ては異なったフォーマットになります。例えば、 U.S. English での "January 2006" は、別のロケールでは "2006/January" になるかもしれません。

利用可能な日時フォーマット文字 を参照してください。 DATE_FORMAT , DATETIME_FORMAT , TIME_FORMAT および MONTH_DAY_FORMAT も参照してください。

設定項目を自作する

設定項目は自由に自作でき、 Django アプリケーションから利用できます。いくつ か取り決めがあるので従うようにして下さい:

  • 設定名は全て大文字にします。
  • 設定値をシーケンス型にする場合、リストではなくタプルを使って下さい。 これは純粋にパフォーマンス上の要求です。
  • 既に存在する設定の再発明はやめましょう。

DJANGO_SETTINGS_MODULE を使わない設定方法

場合によっては、環境変数 DJANGO_SETTINGS_MODULE をバイパスしたい場合も あるでしょう。たとえばテンプレートシステムを単体で使いたい場合、設定ファイ ルの在処を指すような環境変数を取り入れたくはないかもしれません。

こうした場合のために、 Django の設定は手動で行えるようになっています。手動 の設定には django.conf.settings.configure() を呼び出します。

例えば:

from django.conf import settings

settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
    TEMPLATE_DIRS=('/home/web-apps/myapp', '/home/web-apps/base'))

configure() には必要なだけキーワードを指定してかまいません。各キーワー ドは設定とその値を表します。各引数名は全て大文字で、上記の各設定名と同じに せねばなりません。 configure() に渡さなかった指定が後で必要になった場合、 Django はデフォルトの設定値を使います。

ほとんどの場合、この方法で Django を設定する必要がありますし、より大規模な アプリケーション内でフレームワークの一部を使う場合には、実際上記の方法がお 勧めです。

settings.configure() で設定を行った場合、 Django はプロセスの環境変数に 何ら変更を加えません (理由は前述の TIME_ZONE の説明を参照してください。) これらのケースでは、ユーザがすでに環境変数を自由に制御できるものと仮定して います。

カスタムのデフォルト設定

デフォルト設定を django.conf.global_settings 以外の場所から取り込みたい 場合、モジュールやクラスの中で configure() を呼び出し、 default_settings 引数 (または最初の固定引数) でデフォルト設定を渡せます。

以下の例では、デフォルトの設定を myapp_defaults から取り出し、 DEBUG の設定を myapp_defaults の設定に関わらず True になるよう にしています:

from django.conf import settings
from myapp import myapp_defaults

settings.configure(default_settings=myapp_defaults, DEBUG=True)

以下の例では、 myapp_defaults を固定引数にしており、上の例と同じ意味に なります:

settings.configure(myapp_defaults, DEBUG = True)

通常、このようなやり方でデフォルト値をオーバライドする必要はありません。 Django は十分に扱いやすい設定値をデフォルト値にしていて、ほぼ問題なく利用で きます。新たなデフォルトモジュールを渡すと、そのモジュールは Django のデフォ ルトを 完全に 置き換えてしまうため、 import している側のコードで必要な全 ての設定値を指定せねばならないので注意して下さい。設定の完全なリストは django.conf.global_settings にあります。

configure() または DJANGO_SETTINGS_MODULE のいずれかが必要です

環境変数 DJANGO_SETTINGS_MODULE を指定しない場合、設定を利用する何らか のコードが実行される前に、 必ず configure() を呼び出しておかねばなり ません。

環境変数 DJANGO_SETTINGS_MODULE を指定せず、 configure() も呼び出さ なかった場合、 Django は最初に設定にアクセスした時点で ImportError 例外を送出します。

環境変数 DJANGO_SETTINGS_MODULE を指定して、何らかの設定にアクセスした 後に configure() を呼び出すと、 Django は設定がすでに行われている旨の RuntimeError 例外を送出します。

また、 configure() を何度も呼び出したり、何らかの設定にアクセスした後に configure() を呼び出してもエラーになります。

つまりは、「 configure()DJANGO_SETTINGS_MODULE のどちらかを設定 してください」ということです。両方設定してはなりませんし、両方とも忘れても なりません。

電子メールによるエラー通知

サーバのエラー

DEBUGFalse にすると、コードが例外を送出し、その例外が捕捉されず、 結果的に 500 エラーになった場合に、 Django は ADMINS 設定にリストされて いる全てのユーザにメールを送信します。これは、管理者が何らかのエラーにすぐ に気づけるようにするためです。

この機能を無効にするには、 ADMINS 設定から全てのユーザを削除してくださ い。

404 エラー

DEBUGFalse かつ SEND_BROKEN_LINK_EMAILSTrue であり、 MIDDLEWARE_CLASSESCommonMiddleware を登録していると、コードが何 らかの 404 例外を送出して、リクエストにリファラがついている場合、Django は MANAGERS 設定に登録された全てのユーザにメールを送信します (リファラ付き が条件なのは、リファラのないリクエストに対する404 エラーで管理者を煩わせな いためです)。

IGNORABLE_404_ENDSIGNORABLE_404_STARTS を使えば、特定の 404 に 対するレポート送信を抑制できます。例えば:

IGNORABLE_404_ENDS = ('.php', '.cgi')
IGNORABLE_404_STARTS = ('/phpmyadmin/', )

のようにすると、 URL が .php.cgi で終わるような URL や /phpmyadmin/ で始まる URL に対する 404 は報告 されません

この機能を無効にするには、 MANAGERS 設定から全てのエントリを削除してく ださい。