settings.py

settings.pyについて

configフォルダ内のsettings.pyは、Webサービスの様々な設定を記述するファイルです。
appやインストールしたライブラリなどを明記したり、様々なシステムの動きなどを記述したりします。
ここでは、settings.pyの基本的な部分のみ触れていきます。

SECRET_KEY

Djangoのプロジェクトがもつシークレットキーです。プロジェクトが作成されるごとに違うものが生成されます。パスワードのようなものと覚えておきましょう。
普段こちらを使用することはないですが、外部に公開していけないものなので取り扱いには注意してください。

DEBUG

DEBUGがTrueの時は開発用、本番環境で世の中に公開する時はこちらをFalseにして運用します。
機能も分かれるようになっており、例えばDEBUG=Trueの時は、ページ内でエラーが出た時そのエラー内容が表示されるようになっています。
Falseの場合は、エラーページと500などのステータスコードが表示されるようになっています。

ALLOWED_HOST

ALLOWED_HOSTにはアクセスを受け付けるドメインやIPアドレスなどを記述します。例えば、sample.com というドメインで世の中にサービスを公開する際は、以下のようにします。

ALLOWED_HOST = ['sample.com']

DEBUG=Trueの時はこのアクセス制限はかからないようになっています。
またアクセス元に関わらず全てのアクセスを受け付けたいときは下記のように記述できます。これはワイルドカードと言います。

ALLOWED_HOST = ['*']

セキュリティ的に万全とは言えないので取り扱いには注意しましょう。

INSTALLED_APPS

ここには、追加したライブラリやappなどを追加することで、プロジェクト内でそれらを読み込むことができるようになります。
例えば、accountというappとsampleというライブラリを追加したとすると、INSTALLED_APPSに以下のように追加が必要になります。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # appを追加
    'account',
    # ライブラリを追加
    'sample',
]

MIDDLEWARE

MIDDLEWAREとは、バックエンドであるviewsとフロントエンドであるtemplatesの間で処理される機能のことです。デフォルトでセキュリティ関連のMIDDLEWAREが既に登録されてあります。
これは例えば、フロントエンドから送られてきたデータをバックエンドで受け付ける前にあらかじめフィルタなどをかけることでセキュリティを強化しています。
自分で作成したオリジナルのMIDDLEWAREを組み込むことも可能です。
初めの頃は特に触ることはないと思うので学習中の段階では特に気にしないで大丈夫です。

TEMPLATES

DjangoのTemplateエンジンの設定が記述されてあります。Webフレームワークには、フロントエンドであるhtmlファイルでデータなどを扱いやすくする機能が組み込まれていることが多くこれらはTemplateエンジンと呼ばれます。
プロジェクトを作成したら、ここの’DIRS’の部分にtemplatesと記述しておきましょう。
これでプロジェクトディレクトリにtemplatesという名前でフォルダを作成しておくと、全てのhtmlファイルをその中に設置して開発を進めていくことができます。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # templatesを追加
        'DIRS': ['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',
            ],
        },
    },
]

DATABASES

DATABASESではデータベースの設定を記述することができます。
デフォルトでは、sqlite3を使った設定が記述されてあります。
これによって、プロジェクトを作成した後にデータベースの設定を気にせずにmodels.pyなどの設計を進めていくことが可能で、migrateなどを行った際自動で sqlite3のファイルが作成されます。

本番環境で運用する際はpostgresqlやmysqlなどを使用することが多いので、デプロイ時はここにそれらの情報を記述することになります。
クラウドのデータベースを使用する際も同様でDATABASESの設定を変えることで対応が可能です。

LANGUAGE_CODE

プロジェクトのデフォルトの言語設定です。デフォルトでは英語になっています。日本語に設定したい場合は以下のようにしましょう。

LANGUAGE_CODE = 'ja'

TIME_ZONE

プロジェクトのタイムゾーンの設定です。デフォルトではアメリカのUTCになっています。日本に合わせたい場合は以下のようにしましょう。

TIME_ZONE = 'Asia/Tokyo'

LOGIN_REDIRECT_URL

デフォルトではこちらの設定はありませんが設定することが可能です。
LOGIN_REDIRECT_URLはユーザーがログインした際に遷移するページ先を設定することができます。パスを指定することもできますし、urlsのname指定をすることもできます。

LOGIN_REDIRECT_URL = 'account:index'

LOGIN_URL

デフォルトではこちらの設定はありませんが設定することが可能です。
LOGIN_URLはログインURLを明示的に設定することができます。例えば、ログイン権限をかけているページにログインしていないユーザーがアクセスした時、ここで設定されてあるURLに遷移させることができます。

LOGIN_URL = 'account:login'

LOGOUT_REDIRECT_URL

デフォルトではこちらの設定はありませんが設定することが可能です。
LOGOUT_REDIRECT_URLはユーザーがログアウトした時に遷移するURLを設定することができます。

LOGOUT_REDIRECT_URL = 'account:login'

さいごに

別のドキュメントで触れますが、このsettings.pyの中で触れた
DATABASESのデータベース情報や、SECRET_KEYなど取り扱いに注意が必要な情報は、そのままsettings.pyの中に表示しておくのはよろしくないので
環境変数などを用いて運用・管理を行う必要があります。

settings.pyには設定できる機能がたくさんあります。Djangoの公式ドキュメントなどでも色々見ておくと良いでしょう。