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é.
Défi
MoyenDans mysite/settings.py, lisez les valeurs depuis l’environnement :
SECRET_KEYdepuisDJANGO_SECRET_KEY, avec la valeur par défaut"django-insecure-change-me".DEBUG:Trueuniquement lorsqueDJANGO_DEBUGvaut"True".ALLOWED_HOSTSdepuisDJANGO_ALLOWED_HOSTS, séparées par des virgules, avec la valeur par défautlocalhost,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