Menu
CoddyTech

Paramètres issus de l’environnement

Fait partie de la section API JSON du Journey Django de Coddy. Leçon 18 sur 19.

Une fois votre site déployé, copié sur un serveur sur Internet, trois paramètres doivent changer. DEBUG = True montre votre code et tous les motifs d’URL à tout le monde. SECRET_KEY signe les sessions ; elle ne peut donc pas se trouver dans du code que d’autres personnes peuvent lire. ALLOWED_HOSTS répertorie les domaines auxquels le site répond.

La réponse habituelle : les lire depuis des variables d’environnement, des valeurs que le serveur fournit au programme lorsqu’il démarre. os.environ.get(name, default) en lit une, et la valeur par défaut est celle qu’utilise votre propre ordinateur :

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

Une variable est toujours une chaîne de caractères ; convertissez-la donc au type dont vous avez besoin : int() pour un nombre, une comparaison pour obtenir une valeur booléenne, split(",") pour une liste. Choisissez des valeurs par défaut sûres : si une variable est oubliée, DEBUG reste désactivé.

challenge icon

Défi

Moyen

Dans mysite/settings.py, lisez les valeurs depuis l’environnement :

  • SECRET_KEY depuis DJANGO_SECRET_KEY, avec la valeur par défaut "django-insecure-change-me".
  • DEBUG : True uniquement lorsque DJANGO_DEBUG vaut "True".
  • ALLOWED_HOSTS depuis DJANGO_ALLOWED_HOSTS, séparées par des virgules, avec la valeur par défaut localhost,127.0.0.1.

Cliquez sur Run, puis ouvrez /nope/ : lorsque DEBUG est désactivé, la page 404 ne répertorie aucun motif d’URL.

Essayez vous-même

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

Toutes les leçons de API JSON

Entraînez-vous par vous-même : Playground Django