Menu
CoddyTech

Üretim için Statik Dosyalar

Coddy'nin Django Journey'sinin JSON API'leri bölümünün bir parçası. Ders 19 / 19.

Üretim ortamında Gunicorn gibi bir program, runserver yerine Django'yu çalıştırır ve app.js gibi statik dosyaları sunmaz. Bu dosyalar, web sunucusu veya WhiteNoise gibi bir paket tarafından tek bir klasörden sunulur.

Bu klasör, mutlak bir yol olan STATIC_ROOT'tur. python manage.py collectstatic, her uygulamanın static/ dosyalarını bu klasöre kopyalar ve bunu her dağıtımda çalıştırırsın. STATIC_ROOT olmadan işlem ImproperlyConfigured hatasıyla durur.

Ayarlar içindeki yollar, manage.py dosyasını içeren klasör olan BASE_DIR temel alınarak, pathlib'ın / operatörüyle oluşturulur. Ziyaretçilerin yüklediği dosyalar için klasör:

MEDIA_ROOT = BASE_DIR / "uploads"

Yayına almadan önce python manage.py check --deploy, hazır olmayan ayarları listeler.

challenge icon

Görev

Kolay

mysite/settings.py içinde, STATIC_URL öğesinin altında STATIC_ROOT değerini, mutlak yol olarak manage.py dosyasının yanındaki staticfiles klasörüne ayarlayın.

Run'a basın, ardından Shell sekmesinde: from django.core.management import call_command; call_command("collectstatic", interactive=False) komutu kaç dosyanın kopyalandığını yazdırır.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

JSON API'leri bölümündeki tüm dersler

Kendi başına pratik yap: Django playground