Ü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.
Görev
Kolaymysite/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/"
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