جمعآوری فایلها (Collect Static)
جمعآوری فایلهای استاتیک: آمادهسازی برای تولید 📦
قبل از دیپلوی، باید تمام فایلهای استاتیک رو در یک پوشه جمع کنید. این کار با دستور 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()
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.