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