Menu
CoddyTech

환경 변수에서 설정 가져오기

Coddy Django 여정의 JSON API 섹션에 포함된 레슨. 19개 중 18번째.

사이트를 인터넷 서버에 배포하면 세 가지 설정을 변경해야 합니다. DEBUG = True는 누구에게나 코드와 모든 URL 패턴을 보여 줍니다. SECRET_KEY는 세션에 서명하므로 다른 사람이 읽을 수 있는 코드에 두면 안 됩니다. ALLOWED_HOSTS에는 사이트가 응답하는 도메인 목록이 들어갑니다.

일반적인 방법은 환경 변수에서 읽어 오는 것입니다. 환경 변수는 서버가 프로그램을 시작할 때 프로그램에 전달하는 값입니다. os.environ.get(name, default)는 환경 변수 하나를 읽으며, 기본값은 본인 컴퓨터에서 사용되는 값입니다.

PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "20"))
MAINTENANCE = os.environ.get("MAINTENANCE", "no") == "yes"

변수는 항상 문자열이므로 필요한 유형으로 변환해야 합니다. 숫자에는 int()를, 실제 불리언 값에는 비교를, 목록에는 split(",")을 사용하세요. 안전한 기본값을 선택하세요. 변수를 설정하지 않으면 DEBUG는 꺼진 상태로 유지됩니다.

challenge icon

챌린지

중급

mysite/settings.py에서 환경 변수의 값을 읽습니다.

  • DJANGO_SECRET_KEY에서 SECRET_KEY를 읽고, 기본값은 "django-insecure-change-me"입니다.
  • DEBUG: DJANGO_DEBUG가 "True"일 때만 True입니다.
  • DJANGO_ALLOWED_HOSTS에서 ALLOWED_HOSTS를 읽으며, 쉼표로 구분하고 기본값은 localhost,127.0.0.1입니다.

실행을 누른 다음 /nope/를 엽니다. DEBUG가 꺼져 있으면 404 페이지에 URL 패턴이 표시되지 않습니다.

직접 해보기

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

SECRET_KEY = "django-insecure-change-me"
DEBUG = True
ALLOWED_HOSTS = []

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "tasks",
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "mysite.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

LANGUAGE_CODE = "en-us"
TIME_ZONE = "UTC"
USE_I18N = True
USE_TZ = True

STATIC_URL = "static/"

JSON API의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드