このページでは Django における settings.py
の設定可能な項目や、各項目のデフォルト値の調べ方について解説していきます!
Contents
settings.py
とは
settings.py
に関しては、おそらく Django でアプリ開発を行なったことがある方であれば、誰もがご存知のファイルなのではないかと思います。
settings.py
とは、簡単に言えばアプリが動作する際の「Django フレームワークの動作の設定」を行うファイルになります。
ご存知の通り、Django はウェブアプリのフレームワークであり、イメージとしては下の図のようにフレームワークの中であなたが開発したウェブアプリが動作することになります。
ウェブアプリは、このフレームワークの持つ機能を利用する形で動作することができます。
例えば models.py
でモデルを定義し、そのモデルのインスタンスに save
メソッドを実行させることでデータベースにレコードを保存することができます。
この際、自身で直接データベースにレコードを保存するような処理をスクリプトに記述しなくても、save
メソッドの実行さえしてやれば、フレームワークのデータベース関連のモジュールが動作してデータベースへのレコードの保存を行なってくれます。
さらに、この際には、データベースとしては SQLite3
が利用されます。
なぜ SQLite3
が利用されるのかというと、それは settings.py
で SQLite3
を利用するように設定されているからです。フレームワークが起動時に settings.py
を確認し、その settings.py
に記載されたデータベースの情報に従って使用するデータベースが選択されているだけです。
要は settings.py
の設定に従ってフレームワークが動作しているだけですので、この settings.py
を変更すれば、SQLite3
ではなく MySQL
等のデータベースを利用するようなことも可能です。この際には、フレームワークのデータベース関連のモジュールが MySQL
のデータベースにレコードを保存するように動作が変化します。
このように、フレームワーク側のスクリプトを直接変更しなくても、settings.py
を変更するだけでフレームワークの動作を設定することができるよう Django は作られています。
ただ、プロジェクト作成直後(startproject
実行t直後)の settings.py
には必要最低限な項目の設定しか記述されていません。
先ほど例に挙げた「使用するデータベース」に関しては settings.py
に設定が記述されていますが、settings.py
に設定が記述されていない項目もたくさんあります。
例えばですが、Django ではログイン機能をフレームワークを利用して実現することができ、ログイン後に時間が経過すれば自動ログアウトするようになっています。
この「自動ログアウトまでの時間」も settings.py
で設定可能です。
ただし、その「自動ログアウトまでの時間」は作成直後の settings.py
では設定されていないため、そもそも settings.py
で「自動ログアウトまでの時間」を設定可能であることを知らなかった人も多いのではないかと思います。
このように、プロジェクト作成時に settings.py
で設定されている項目は必要最低限のものだけになりますが、前述の「自動ログアウトまでの時間」のように、settings.py
では他にももっと様々な項目に対して設定を行うことが可能です。
この設定可能な項目を知っておけば、より詳細なフレームワークの動作を実現することができるようになり、より自分好みのウェブアプリを開発しやすくなります。
global_settings.py
に設定可能な項目やデフォルト値が記載されている
では、その設定可能な項目はどうやって調べれば良いでしょうか?
この章の題名にも記載していますが、global_settings.py
というファイルを見れば設定可能な項目を調べることができます。さらに、それらの設定可能な項目に対するデフォルト値についても調べることが出来ます。
この global_settings.py
は、Django フレームワークのデフォルト動作を設定するファイルとなります。
もう少し具体的にいうと、まずフレームワークが起動した際には global_settings.py
が読み込まれ、そこでフレームワークのデフォルトの動作が設定されることになります。
さらに、settings.py
が読み込まれて settings.py
で設定されている項目に対してのみフレームワークの動作の設定が上書きされることになります。
そして、その上書きされた設定に基づいてフレームワークは動作することになります。
settings.py
はプロジェクトごとに用意されていますので、これによってプロジェクトごとにフレームワークの動作の設定を行うことが可能です。
つまり、settings.py
はプロジェクト単位で global_settings.py
での設定を上書きするためのファイルと考えることができ、global_settings.py
で設定されている項目は settings.py
でも設定することが可能です(そしてその設定により global_settings.py
で行われた設定を上書きすることが出来ます)。
そのため、global_settings.py
を読めば、どんな項目が settings.py
で設定可能であるかを確認することが出来ます。さらに、global_settings.py
では各項目に対してデフォルト値が設定されていますので、各設定項目のデフォルト値も調べることが出来ます。
例えば global_settings.py
には下記のような行があり、Cookie の知識がある方であれば「自動ログアウトまでの時間」の設定が可能であることに気づくことが出来ます。さらに、デフォルト値が2週間であることも確認できますね!
# Age of cookie, in seconds (default: 2 weeks).
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
上記のように各項目に対してはコメントで説明されているので、何となく各設定項目の意味合いは理解できるのではないかと思います(もちろんウェブ等の前提知識が必要となるものもあります)。
もし自動ログアウト時間を変更したいのであれば、settings.py
に下記を追記すれば、global_settings.py
の設定が上書きされ、自動ログアウト時間が 5
分(60 * 5
秒)に設定されることになります。
SESSION_COOKIE_AGE = 60 * 5
こんな感じで、global_settings.py
を読めば settings.py
で設定可能な項目を確認することができます。そして、必要に応じて settings.py
側で設定を行うことで、プロジェクトごとにフレームワークの動作を変更することが出来ます。
もちろん、左辺の変数名だけ見て具体的に「何が設定可能なのか」をすぐに理解するのが難しい場合もあると思いますが、変数名を Google などで検索すれば、その変数で設定可能なことや実際の設定例等の詳細な情報を得ることができると思います。
スポンサーリンク
global_settings.py
を読む方法
最後に、先ほど紹介した global_settings.py
はどうすれば読めるのか?について説明しておきます。
PC 内の global_settings.py
を読む
global_settings.py
は Django パッケージの中のファイルの1つですので、Django をインストールしているのであれば PC 内に存在するはずです。なので、このファイルを PC 内から見つけてエディタ等で開いてやれば読むことが出来ます。
具体的には、global_settings.py
は Django パッケージのフォルダの下の conf
フォルダの中にあります。
ただ、Django パッケージのフォルダの在処は OS や Django のインストールの仕方によって異なるため、明確な場所をお伝えすることが出来ません…。
参考程度の情報になりますが、私の PC の global_settings.py
の場所について紹介しておきます。
私が使用している PC のOS は Mac で、brew
コマンドでインストールした Python から pip
コマンドでインストールした Django の場合、下記の場所に global_settings.py
があります。
/usr/local/lib/python3.10/site-packages/django/conf/global_settings.py
また、GUI インストーラからインストールした Python から pip
コマンドでインストールした Django の場合に関しては、下記の場所に global_settings.py
があります。
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/conf/
ちなみに、Django パッケージのトップフォルダは pip uninstall
コマンドでアンインストールしようとした場合に表示されますので、フォルダの場所を知るために pip uninstall
コマンドを実行してみるのもアリです。
ただ、この場合は間違って本当に Django をアンインストールしてしまわないように注意してください(Proceed (Y/n)?
と入力が促された際に n
を入力する必要があります)。
% python -m pip uninstall django Found existing installation: Django 4.0.5 Uninstalling Django-4.0.5: Would remove: /usr/local/bin/django-admin /usr/local/lib/python3.10/site-packages/Django-4.0.5.dist-info/* /usr/local/lib/python3.10/site-packages/django/* Proceed (Y/n)?
Github の global_settings.py
を読む
また、Django のソースコードは Github で公開されていますので、Github のサイトに行って global_settings.py
を読むこともできます。
具体的には、Django のソースコードは Github の下記ページで公開されています。
https://github.com/django/django/
上記ページから django
→ conf
とフォルダを辿れば global_settings.py
が見つかるはずなので、クリックしてやれば global_settings.py
を読むことが出来ます。
global_settings.py
は変更しないように注意
前述でも説明しましたが、global_settings.py
は PC 内に Django パッケージの中のファイルの1つとして存在しますので、読むこともできますし、変更することも可能です。
ただ、global_settings.py
はプロジェクト単位やアプリ単位ではなく、PC 内の Django フレームワークそのものの設定を行うファイルとなりますので、変更してしまうと影響範囲が大きいです。今まで Django で開発したアプリの動作まで変わってしまう可能性があります。
なので、global_settings.py
は変更せずに、settings.py
の方を変更して設定を追記するようにしてください。これにより、プロジェクト単位で Django フレームワークの動作を切り替えることができるようになります。
具体的には、global_settings.py
で行われている設定を変更したい場合は、その設定が行われている行を settings.py
にコピペし、さらにコピペした行の右辺側の値を変更してやれば良いです。
これによって、global_settings.py
で行われた設定が settings.py
によって上書きされ、あなたが作成しているアプリが動作する際のフレームワークの動きを変更することが出来ます。
まとめ
このページでは Django における settings.py
の設定可能な項目や、各項目のデフォルト値の調べ方について解説しました!
settings.py
は Django フレームワークの動作の設定を行うファイルであり、プロジェクト作成時の settings.py
では必要最低限な設定しか行われていません。
settings.py
に必要な設定を追記することでフレームワークの動作を変更することが可能であり、設定可能な項目や、各設定のデフォルト値は global_settings.py
を読めば確認することが出来ます。
この global_settings.py
は Django のファイル1つなので Django をインストールすれば入手することが出来ますし、Github から読むこともできます。
設定可能な項目を知っていれば、より自分好みのアプリの動作を実現することができるようになりますので、是非 global_settings.py
の存在は知っておいてください!