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, Django’yu runserver yerine ç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ı buraya kopyalar ve bu komutu her dağıtımda çalıştırırsın. STATIC_ROOT olmadan işlem ImproperlyConfigured hatasıyla durur.

Ayar dosyalarındaki yollar, manage.py dosyasını içeren klasör olan BASE_DIR temel alınarak, pathlib’ın / operatörüyle oluşturulur. Sitenin dışa aktarımları için bir klasör:

EXPORTS_DIR = BASE_DIR / "data" / "exports"

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

challenge icon

Görev

Kolay

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

Shell sekmesinde aşağıdaki satırı çalıştır: 127 static files copied gibi bir satır yazdırır; bunların çoğu yönetici arayüzüne aittir ve aralarında tasks/app.js de bulunur.

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

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