Menu
CoddyTech

Statische Dateien für die Produktion

Teil des Abschnitts JSON-APIs der Django-Journey von Coddy. Lektion 19 von 19.

In der Produktionsumgebung führt ein Programm wie Gunicorn Django anstelle von runserver aus und stellt keine statischen Dateien wie app.js bereit. Sie werden aus einem einzigen Ordner vom Webserver oder einem Paket wie WhiteNoise bereitgestellt.

Dieser Ordner ist STATIC_ROOT, ein absoluter Pfad. python manage.py collectstatic kopiert die static/-Dateien jeder App dorthin, und du führst den Befehl bei jedem Deployment aus. Ohne STATIC_ROOT wird der Vorgang mit ImproperlyConfigured abgebrochen.

Pfade in den Einstellungen werden mit dem /-Operator von pathlib ausgehend von BASE_DIR erstellt, dem Ordner, der manage.py enthält. Ein Ordner für die Exporte der Website:

EXPORTS_DIR = BASE_DIR / "data" / "exports"

Vor dem Livegang listet python manage.py check --deploy Einstellungen auf, die noch nicht bereit sind.

challenge icon

Aufgabe

Einfach

Setze in mysite/settings.py unter STATIC_URL STATIC_ROOT als absoluten Pfad auf den Ordner staticfiles neben manage.py.

Führe die folgende Zeile im Tab „Shell“ aus: Sie gibt eine Zeile wie 127 static files copied aus, wobei die meisten Dateien zum Admin gehören und sich auch tasks/app.js darunter befindet.

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

Probier es selbst

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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in JSON-APIs

Übe selbstständig: Django-Playground