환경 변수에서 설정 가져오기
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는 꺼진 상태로 유지됩니다.
챌린지
중급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 플레이그라운드