[Django]settings.pyでよく見るパラメータまとめのメモ

# はじめに
業務でDjangoを使っているのですが、
あまり設定ファイルをいじることがないので、この際パラメータにどんなものがあるか調べてみました。
大体は名前から意味が予測つくようになっていると思いますが、注意点なども含めて書き残しておきたいと思います。

# デフォルトで存在するパラメータ
## BASE_DIR
・プロジェクトの基となるフォルダ
・`django-admin startproject projects-name`で作成したプロジェクトの一番上位のフォルダ
## SECRET_KEY
・Django のインストールごとに設定される個別の秘密鍵
・暗号化やハッシュ化で用いられる秘密鍵であり、Djangoプロジェクト作成時にランダムに生成される
## DEBUG
・本番環境では必ずFalse
・開発環境でデバッグが必要な時にTrueにしておく。エラーが起きたときに、詳細なエラー画面を表示してくれる。ただしKEYやPASSなどの重要情報はセキュリティのため表示されないようになっている。
・実行したクエリを全て記憶しておくので、メモリへの負荷は高い
## ALLIWED_HOSTS
・サーバーが許可するホスト/ドメイン名を指定。(「Hostヘッダインジェクション攻撃」対策)
・`DEBUG=TRUE`の時は、['.localhost', '127.0.0.1', '[::1]']のみ有効
## INSTALLED_APPS
・アプリケーションの一覧を定義している
・データベースのマイグレーションファイル作成の際などに利用される
・よく書き忘れてエラーの原因になるので注意(私の体験談)
## MIDDLEWARE 
・Django のリクエスト/レスポンス処理にフックを加えるためのフレームワーク
・上から順次実行されていく
```Django:デフォルトMiddlewareの内容
MIDDLEWARE = [
    #セキュリティ強化 例)HTTPでアクセスした場合HTTPSで始まるURLにリダイレクト等
    'django.middleware.security.SecurityMiddleware',

    #セッション管理
    'django.contrib.sessions.middleware.SessionMiddleware',

    #アクセス制限やURLリライティング 例)URLの末尾に/を付け加えてくれる
    'django.middleware.common.CommonMiddleware',

    #CSRFトークンの検証
    'django.middleware.csrf.CsrfViewMiddleware',

    #リクエストオブジェクトの「user」属性にユーザー情報をセット
    'django.contrib.auth.middleware.AuthenticationMiddleware',

    #フラッシュメッセージ
    'django.contrib.messages.middleware.MessageMiddleware',

    #クリックジャッキング対策
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
```
## ROOT_CONF
・文字通り一番最初のurl.pyを指定します。
・デフォルトなら`project-name.urls`
## TEMPLATES 
・Djangoで使用する全てのテンプレートの設定を行う
・BACKEND:テンプレートエンジンの指定
(デフォルトだとdjango.template.backends.django.DjangoTemplates)
・NAME: テンプレートエンジンのエイリアス(別名)。使うことは多くないと思われる
・DIRS:テンプレートエンジンが探すディレクトリを指定する
・APP_DIRS:　アプリケーション配下のテンプレートを探すかどうかのフラグ
・OPTIONS:テンプレートバックエンドに渡す追加のパラメータを記載
## WSGI_APPLICATION
・Djangoの組み込みサーバ(例:runserver)が使うWSGIアプリケーションオブジェクトのパスを指定している
・WSGIはサーバーとWebアプリケーションをつなぐ共通のインターフェース
## DATABASES 
・Djangoで使用するデータベースの設定を行う
・デフォルトではSQLiteの設定をしているが、 MySQL(MariaDB), PostgreSQL, Oracleなどももちろん利用可能
・パラメータの種類が多いので名前だけ紹介します
>ATOMIC_REQUESTS, AUTOCOMMIT, ENGINE, HOST, NAME, CONN_MAX_AGE, OPTIONS, PASSWORD, PORT, TIME_ZONE, DISABLE_SERVER_SIDE_CURSORS, USER, TEST
## AUTH_PASSWORD_VALIDATORS 
・パスワードの妥当性検証のために使われる。
・デフォルトでは、バリデーションがなされていない。
・[設定方法ドキュメント](https://docs.djangoproject.com/ja/3.2/topics/auth/passwords/#module-django.contrib.auth.password_validation)
## LANGUAGE_CODE
・言語コードを表す
## TIME_ZONE
・文字通りタイムゾーンを表す
・`USE_TZ` が Falseのとき、これは Django が日時を保持するタイムゾーン
## USE_TZ
・タイムゾーン変換機能を有効にするかどうかを指定
・認識しない(False)場合、ローカルタイムを使う。 
## USE_I18N
・多言語化機能を有効にするか否かを指定
・I18N はinternationalisation の略らしい
## STATIC_URL
・web serverに静的ファイルを見に行く場所を指定
・もう少し詳しく知りたい方は下のリンクを参照してください

https://qiita.com/saira/items/a1c565c4a2eace268a07

## DEFAULT_AUTO_FIELD
・モデルクラスに primary_key=True のフィールドを明示的に定義しない場合、自動で id という名前で主キーのフィールドが追加される
・フィールドの型は`AutoField`,`BigAutoField`,`BigIntegerField`,`BinaryField`などいくつか存在する。([ドキュメント該当箇所](https://docs.djangoproject.com/ja/3.2/ref/models/fields/#field-types))

# 終わりに
ほかにもたくさんパラメータがあるので、いろいろ書こうと思ったのですがちょっと力尽きました。😂
また余力があれば、他のパラメータも追加していきたいと思います。





## 参考記事
https://docs.djangoproject.com/ja/3.2/intro/tutorial01/

https://www.tohoho-web.com/django/settings.html