Menu
CoddyTech

File statici per la produzione

Fa parte della sezione API JSON del percorso Django di Coddy. Lezione 19 di 19.

In produzione, un programma come Gunicorn esegue Django al posto di runserver e non serve file statici come app.js. Questi vengono serviti da un'unica cartella, dal server web o da un pacchetto come WhiteNoise.

Quella cartella è STATIC_ROOT, un percorso assoluto. python manage.py collectstatic copia al suo interno i file static/ di ogni app, e lo esegui a ogni deploy. Senza STATIC_ROOT, si interrompe con ImproperlyConfigured.

I percorsi nelle impostazioni vengono creati a partire da BASE_DIR, la cartella che contiene manage.py, con l'operatore / di pathlib. La cartella per i file caricati dai visitatori:

MEDIA_ROOT = BASE_DIR / "uploads"

Prima di andare online, python manage.py check --deploy elenca le impostazioni che non sono pronte.

challenge icon

Sfida

Facile

In mysite/settings.py, sotto STATIC_URL, imposta STATIC_ROOT sulla cartella staticfiles accanto a manage.py, come percorso assoluto.

Premi Run, poi nella scheda Shell: from django.core.management import call_command; call_command("collectstatic", interactive=False) stampa il numero di file copiati.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di API JSON

Esercitati da solo: Playground Django