Using Environment Variables
A snippet showing how to use environment variables in Django settings.
# settings.py
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "CHANGE-ME-IN-PROD")
DEBUG = os.environ.get("DJANGO_DEBUG", "0") == "1"
_raw_hosts = os.environ.get("DJANGO_ALLOWED_HOSTS", "localhost,127.0.0.1")
ALLOWED_HOSTS = [h.strip() for h in _raw_hosts.split(",") if h.strip()]
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.environ.get("POSTGRES_DB", "app"),
"USER": os.environ.get("POSTGRES_USER", "app"),
"PASSWORD": os.environ.get("POSTGRES_PASSWORD", ""),
"HOST": os.environ.get("POSTGRES_HOST", "127.0.0.1"),
"PORT": os.environ.get("POSTGRES_PORT", "5432"),
}
}
# Linux / macOS
export DJANGO_SECRET_KEY="super-secret-key"
export DJANGO_DEBUG="0"
export DJANGO_ALLOWED_HOSTS="example.com,www.example.com"
export POSTGRES_DB="app"
export POSTGRES_USER="app"
export POSTGRES_PASSWORD="strong-password"
# Windows PowerShell
$env:DJANGO_SECRET_KEY="super-secret-key"
$env:DJANGO_DEBUG="0"
$env:DJANGO_ALLOWED_HOSTS="example.com,www.example.com"
$env:POSTGRES_DB="app"
$env:POSTGRES_USER="app"
$env:POSTGRES_PASSWORD="strong-password"
Explanation:
-
Use
os.environ.get()for secrets; don't commit them to version control. -
Control
DEBUGvia an environment variable; default to secure values. -
Parse
ALLOWED_HOSTSas a comma-separated list for easy overrides. -
Pair with libraries like
django-environor Docker secrets for cleaner configs.
- Category Deployment & Settings
- Total Views 998
- Last Modified 15 November, 2025
- Tags #settings #environment #deployment #config
Previous snippet
Google Cloud Storage for Static Files
Next snippet