Menu
CoddyTech

Configurações do ambiente

Parte da seção APIs JSON do Journey de Django da Coddy. Lição 18 de 19.

Depois que seu site estiver implantado, ou seja, copiado para um servidor na internet, três configurações precisam mudar. DEBUG = True mostra seu código e todos os padrões de URL para qualquer pessoa. SECRET_KEY assina sessões, então não pode ficar no código que outras pessoas leem. ALLOWED_HOSTS lista os domínios aos quais o site responde.

A solução mais comum: ler essas configurações de variáveis de ambiente, valores que o servidor fornece ao programa quando ele é iniciado. os.environ.get(name, default) lê uma variável, e o valor padrão é o que seu próprio computador recebe:

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

Uma variável é sempre uma string, então converta-a para o tipo de que você precisa: int() para um número, uma comparação para obter um valor booleano, split(",") para uma lista. Escolha valores padrão seguros: se uma variável for esquecida, DEBUG ficará desativado.

challenge icon

Desafio

Médio

Em mysite/settings.py, leia as configurações do ambiente:

  • SECRET_KEY de DJANGO_SECRET_KEY, com o valor padrão "django-insecure-change-me".
  • DEBUG: será True somente quando DJANGO_DEBUG for "True".
  • ALLOWED_HOSTS de DJANGO_ALLOWED_HOSTS, separados por vírgulas, com o valor padrão localhost,127.0.0.1.

Clique em Run e, em seguida, abra /nope/: com DEBUG desativado, a página 404 não lista nenhum padrão de URL.

Experimente você mesmo

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 as lições de APIs JSON

Pratique por conta própria: Playground de Django