Menu
CoddyTech

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.

challenge icon

Défi

Facile

Dans 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/"
quiz iconTestez-vous

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