Djangoで開発と本番の環境を分ける方法【簡単】

file

ローカル用ファイルを作成

settings.pyには本番用のものを書いて、
新しくsettings_local.pyを作成して、
そこで、settingsを読み込んで、

settings_local.py
from .settings import *

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'local',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

DATABASEとか上書きしたいものだけ、上書きして、

ローカルでのサーバー起動

ローカルで呼び出すときは、こんな感じでsettingsを設定して呼び出します。

python manage.py runserver --settings=project.settings_local

vscodeで起動する場合の設定

私はVSCODEでDjangoを起動しているので、
argsに設定すれば楽々です、"--settings=project.settings_local"

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Django",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}\\manage.py",
            "args": [
                "runserver",
                "--settings=project.settings_local"
            ],
            "django": true,
            "justMyCode": true
        }
    ]
}

簡単な感じでよいかなと?

おまけ

個人でやってる場合は、開発がwindowsで本番がLinuxって
完全にわかってたりするから、こうやって分岐させといたら、楽々
manage.py

    if os.name == 'nt':
    # たまたま開発がWindosだったから
        os.environ.setdefault('DJANGO_SETTINGS_MODULE',
                              'project.settings_local')
    else:
        os.environ.setdefault('DJANGO_SETTINGS_MODULE',
                              'project.settings')

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です