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

챌린지

중급

환경 변수에서 세 가지 설정을 읽어 오세요.

  1. mysite/settings.py의 맨 위에 import os를 추가하세요.
  2. 시작 코드의 SECRET_KEY, DEBUG, ALLOWED_HOSTS 줄을 바꾸세요. SECRET_KEY는 DJANGO_SECRET_KEY에서 가져오며, 기본값은 "django-insecure-change-me"입니다. DEBUG는 DJANGO_DEBUG의 텍스트가 "True"일 때만 True입니다. ALLOWED_HOSTS는 DJANGO_ALLOWED_HOSTS를 쉼표로 분리한 값이며, 기본값은 localhost,127.0.0.1입니다.

/nope/를 여세요. URL 패턴 목록 없이 Not Found만 표시됩니다.

직접 해보기

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 플레이그라운드