Menu
CoddyTech

File statis untuk produksi

Termasuk bagian API JSON dalam perjalanan Django di Coddy. Pelajaran 19 dari 19.

Di lingkungan produksi, program seperti Gunicorn menjalankan Django, bukan runserver, dan tidak menyajikan file statis seperti app.js. File tersebut disajikan dari satu folder oleh server web atau package seperti WhiteNoise.

Folder itu adalah STATIC_ROOT, sebuah path absolut. python manage.py collectstatic menyalin semua file static/ dari setiap aplikasi ke folder tersebut, dan kamu menjalankannya setiap kali deploy. Tanpa STATIC_ROOT, proses akan berhenti dengan ImproperlyConfigured.

Path dalam pengaturan dibuat dari BASE_DIR, folder yang berisi manage.py, dengan operator / dari pathlib. Folder untuk file yang diunggah pengunjung:

MEDIA_ROOT = BASE_DIR / "uploads"

Sebelum ditayangkan, python manage.py check --deploy mencantumkan pengaturan yang belum siap.

challenge icon

Tantangan

Mudah

Di mysite/settings.py, di bawah STATIC_URL, atur STATIC_ROOT ke folder staticfiles yang berada di samping manage.py, sebagai path absolut.

Tekan Jalankan, lalu di tab Shell: from django.core.management import call_command; call_command("collectstatic", interactive=False) akan mencetak jumlah file yang disalin.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di API JSON

Latihan sendiri: Playground Django