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. Diese werden aus einem 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 jeder Bereitstellung 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. Der Ordner für Dateien, die Besucher hochladen:

MEDIA_ROOT = BASE_DIR / "uploads"

Bevor du live gehst, 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 auf den Ordner staticfiles neben manage.py, und zwar als absoluten Pfad.

Klicke auf Run und gib dann im Tab Shell Folgendes ein: from django.core.management import call_command; call_command("collectstatic", interactive=False). Der Befehl gibt aus, wie viele Dateien er kopiert hat.

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