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.
Sfida
FacileIn 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/"
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di API JSON
2Lettura delle richieste
Filtrare con una queryCreare con POST5Progetto: organizzare il lavoro
Progetto: le prioritàProgetto: cancellare le attività completateEsercitati da solo: Playground Django