Menu
CoddyTech

Configuración desde el entorno

Parte de la sección API JSON del Journey de Django de Coddy. Lección 18 de 19.

Una vez que tu sitio esté implementado, es decir, copiado a un servidor en internet, deben cambiar tres ajustes. DEBUG = True muestra tu código y todos los patrones de URL a cualquiera. SECRET_KEY firma valores en los que tu sitio debe confiar, como los enlaces para restablecer contraseñas y las cookies firmadas, por lo que no puede estar en un código que otras personas puedan leer. ALLOWED_HOSTS enumera los dominios que el sitio sirve.

La respuesta habitual: léelos desde variables de entorno, valores que el servidor proporciona al programa cuando se inicia. os.environ.get(name, default) lee una, y el valor predeterminado es lo que obtiene tu propio ordenador:

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

Una variable siempre es una cadena, así que conviértela al tipo que necesitas: int() para un número, una comparación para un valor booleano real, split(",") para una lista. Elige valores predeterminados seguros: si olvidas una variable, DEBUG queda desactivado.

challenge icon

Desafío

Intermedio

Lee tres ajustes del entorno.

  1. Al principio de mysite/settings.py, añade import os.
  2. Reemplaza las líneas SECRET_KEY, DEBUG y ALLOWED_HOSTS iniciales. SECRET_KEY se obtiene de DJANGO_SECRET_KEY, con el valor predeterminado "django-insecure-change-me". DEBUG solo es True cuando DJANGO_DEBUG es el texto "True". ALLOWED_HOSTS se obtiene de DJANGO_ALLOWED_HOSTS y se divide por las comas; el valor predeterminado es localhost,127.0.0.1.

Abre /nope/: solo ves «No encontrado», sin ninguna lista de patrones de URL.

Pruébalo tú mismo

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/"

Todas las lecciones de API JSON

Practica por tu cuenta: Playground de Django