使用環境變數管理跨伺服器的設定

使用環境變數是一種廣泛使用的方法,可根據環境設定應用程式的配置,如 The Twelve-Factor App 中所述

由於配置可能會在部署環境之間發生變化,因此這是一種非常有趣的方式來修改配置,而無需深入挖掘應用程式的原始碼,以及將祕密儲存在應用程式檔案和原始碼儲存庫之外。

在 Django 中,主要設定位於專案資料夾中的 settings.py。由於它是一個簡單的 Python 檔案,你可以使用標準庫中的 Python 的 os 模組來訪問環境(甚至具有適當的預設值)。

settings.py

import os

SECRET_KEY = os.environ.get('APP_SECRET_KEY', 'unsafe-secret-key')

DEBUG = bool(os.environ.get('DJANGO_DEBUG', True) == 'False')

ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '').split()

DATABASES = {
    'default': {
        'ENGINE': os.environ.get('APP_DB_ENGINE', 'django.db.backends.sqlite3'),
        'NAME': os.environ.get('DB_NAME', 'db.sqlite'),    
        'USER': os.environ.get('DB_USER', ''),
        'PASSWORD': os.environ.get('DB_PASSWORD', ''),
        'HOST': os.environ.get('DB_HOST', None),
        'PORT': os.environ.get('DB_PORT', None),
        'CONN_MAX_AGE': 600,
    }
}

使用 Django,你可以更改資料庫技術,以便在開發計算機上使用 sqlite3(這應該是提交源控制系統的理想預設值)。雖然這是可能的,但不建議:

支援服務(例如應用程式的資料庫,排隊系統或快取)是 dev / prod 奇偶校驗非常重要的一個領域。 ( 十二因素應用程式 - 開發/生產平價

要使用 DATABASE_URL 引數進行資料庫連線,請檢視相關示例