دوره‌ها / Django / جمع‌آوری فایل‌ها (Collect Static)

جمع‌آوری فایل‌ها (Collect Static)

20 دقیقه Article

جمع‌آوری فایل‌های استاتیک: آماده‌سازی برای تولید 📦

قبل از دیپلوی، باید تمام فایل‌های استاتیک رو در یک پوشه جمع کنید. این کار با دستور collectstatic انجام میشه!

دستور collectstatic

# جمع‌آوری فایل‌های استاتیک
python manage.py collectstatic

# این دستور تمام فایل‌های استاتیک رو
# از STATICFILES_DIRS و اپلیکیشن‌ها
# به STATIC_ROOT کپی می‌کنه
چه اتفاقی می‌افته؟ جنگو تمام فایل‌های استاتیک رو از STATICFILES_DIRS و پوشه static اپلیکیشن‌ها پیدا می‌کنه و به STATIC_ROOT کپی می‌کنه.

تنظیمات STATIC_ROOT

# mysite/settings.py
import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

STATIC_ROOT = BASE_DIR / 'staticfiles'  # پوشه نهایی برای فایل‌های استاتیک
نکته: پوشه staticfiles رو به .gitignore اضافه کنید. این پوشه در سرور ساخته میشه و نیازی به commit کردن نداره.

🎯 تمرین عملی:

دستور collectstatic رو اجرا کنید و ببینید چه فایل‌هایی جمع میشن. سپس پوشه staticfiles رو بررسی کنید و مطمئن بشید که همه فایل‌ها درست کپی شدن.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: ساخت دستور collectstatic Easy
سوال تمرین

تمرین: ساخت دستور collectstatic

یک مسیر STATIC_ROOT می‌گیریم و یک دستور راهنما تولید می‌کنیم.

ورودی (Input)

یک خط: مسیر (مثلاً /app/staticfiles).

خروجی (Output)

یک خط: python manage.py collectstatic --noinput (و سپس مسیر).

قانون مهم

کد شما باید فقط از stdin بخواند و فقط روی stdout چاپ کند. از ورودی‌های تعاملی استفاده نکنید.

پاسخ تمرین
PYTHON
import sys

def solve():
    root = sys.stdin.read().strip()
    sys.stdout.write(f'python manage.py collectstatic --noinput -> {root}')

if __name__ == '__main__':
    solve()

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.