【django】開発・本番環境用にsettings.pyを分割
当ページのリンクには広告が含まれています。
django
の設定ファイルのsettings.py
を分割する方法を記載します。
目次
初期設定
お決まりのパターンで初期設定を行います。
django-admin startproject config .
settingsディレクトリの作成
settings.py
がある階層でsettings
ディレクトリを作成します。
その後、settings
ディレクトリに
- base.py
- local.py
- production.py
をそれぞれ作成します。
各ファイルの作成
ファイルを修正していきます。ここでは
- settings
- base.py
- local.py
- production.py
- manage.py
- wsgi.py
を修正します。
base.pyの修正
base.py
ではBASE_DIR
の階層を変更します。
settingsディレクトリを作成して階層が深くなったからです。
末尾にparent
を追加します。
- BASE_DIR = Path(__file__).resolve().parent.parent
+ BASE_DIR = Path(__file__).resolve().parent.parent.parent
次に、それぞれのファイルを記述します。from .base import *
でbase.py
の設定をインポートしています。
local.pyの作成
まずはlocal.py
で開発環境用の設定を行います。
下記では一例として、ローカルだけ追加したいパッケージやデータベースの設定を行っています。
from .base import *
ALLOWED_HOSTS = ['*']
INSTALLED_APPS += [
'debug_toolbar',
]
MIDDLEWARE += [
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'django',
'USER': 'admin',
'PASSWORD': 'admin',
'PORT': '5433'
}
}
INTERNAL_IPS = ['127.0.0.1']
使用するには
pip install django-debug-toolbar
でインストールします。
【django-debug-toolbar】の使い方と設定方法
djangoでの開発環境で必須のdjango-debug-toolbar。 今回は導入方法と設定方法をご紹介いたします。 https://django-debug-toolbar.readthedocs.io/en/latest/ django-d…
Dockerを利用したPostgreSQLの環境構築
Dockerを用いてPostgreSQLの環境構築を行います。 また、公式サンプルのデータも追加いたします。 サンプルファイルはこちら https://www.postgresqltutorial.com/postg…
【django】Dockerで簡単に開発環境を構築【MySQL】
Djangoの開発環境を構築する際に、Docker・docker-composeを用いる手順をまとめました。 データベースはmysql5.7を使用します。ディレクトリは以下の構成で作成しました…
production.pyの作成
ここでは、本番環境用の設定を記述します。
from .base import *
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')
DATABASES = {
'default': {
'ENGINE': env('DB_ENGINE'),
'NAME': env('DB_NAME'),
'USER': env('DB_USER'),
'PASSWORD': env('DB_PASSWORD'),
'PORT': env('DB_PORT')
}
}
STATIC_ROOT = '/usr/share/nginx/html/static'
MEDIA_ROOT = '/usr/share/nginx/html/media'
データベースは、django-environ
を使用して.env
ファイルを作成しています。
【django-environ】環境変数を簡単に管理する
djangoのSECRET_KEYやAPIキーなどを管理する時に便利なのが環境変数への設定。 環境変数を簡単に設定できるdjango-environをご紹介します。 django-environ インストー…
ホスト設定とデータベースを環境変数で設定しておき、nginx
から配信する静的ファイルの配信位置を指定しています。
manage.pyの修正
manage.py
のos.environ.setdefault()
を修正します。
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')
全文になります。
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
wsgi.pyの修正
manage.py
と同様に修正します。
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')
修正は以上になります。
開発用サーバーの起動
python manage.py runserver
で起動できたら完了です。
また、設定ファイルを切り替えたい場合には
python manage.py runserver --setting config.settings.production
のように引数--settings
で切替可能です。
コメント