Fichiers statiques pour la production
Fait partie de la section API JSON du Journey Django de Coddy. Leçon 19 sur 19.
En production, un programme comme Gunicorn exécute Django à la place de runserver, et il ne sert pas les fichiers statiques tels que app.js. Ils sont servis depuis un seul dossier, par le serveur web ou par un paquet comme WhiteNoise.
Ce dossier est STATIC_ROOT, un chemin absolu. python manage.py collectstatic y copie les fichiers static/ de chaque application, et vous l’exécutez à chaque déploiement. Sans STATIC_ROOT, l’exécution s’arrête avec ImproperlyConfigured.
Les chemins dans les paramètres sont construits à partir de BASE_DIR, le dossier qui contient manage.py, avec l’opérateur / de pathlib. Le dossier destiné aux fichiers téléversés par les visiteurs :
MEDIA_ROOT = BASE_DIR / "uploads"Avant la mise en production, python manage.py check --deploy répertorie les paramètres qui ne sont pas prêts.
Défi
FacileDans mysite/settings.py, sous STATIC_URL, définissez STATIC_ROOT sur le dossier staticfiles à côté de manage.py, sous la forme d’un chemin absolu.
Cliquez sur Run, puis dans l’onglet Shell : from django.core.management import call_command; call_command("collectstatic", interactive=False) affiche le nombre de fichiers copiés.
Essayez vous-même
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "django-insecure-change-me")
DEBUG = os.environ.get("DJANGO_DEBUG", "False") == "True"
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "localhost,127.0.0.1").split(",")
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/"
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de API JSON
Entraînez-vous par vous-même : Playground Django