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 invece di runserver e non serve file statici come app.js. Questi vengono serviti da un'unica cartella, tramite il server web o 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 devi eseguirlo a ogni distribuzione. Senza STATIC_ROOT, si interrompe con ImproperlyConfigured.

I percorsi nelle impostazioni vengono creati a partire da BASE_DIR, la cartella che contiene manage.py, usando l'operatore / di pathlib. Una cartella per le esportazioni del sito:

EXPORTS_DIR = BASE_DIR / "data" / "exports"

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.

Esegui la riga qui sotto nella scheda Shell: stampa una riga come 127 static files copied, la maggior parte dei quali appartiene all'interfaccia di amministrazione, tra cui tasks/app.js.

from django.core.management import call_command; call_command("collectstatic", interactive=False)

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