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.
Sfida
FacileIn 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/"
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