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 DEBUG via an environment variable; default to secure values.
  • Parse ALLOWED_HOSTS as a comma-separated list for easy overrides.
  • Pair with libraries like django-environ or Docker secrets for cleaner configs.
  • Category Deployment & Settings
  • Total Views 999
  • Last Modified 15 November, 2025
  • Tags #settings #environment #deployment #config
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.