جمع آوری فایل های استاتیک (Collect Static Files)
در جنگو، «فایل استاتیک (Static File)» یعنی CSS، JS و تصویر. وقتی DEBUG=False باشد، سرویس دهنده خودکار نیست. بنابراین باید «جمع آوری فایل های استاتیک» انجام دهیم. سپس می توانیم آن ها را با وب سرور یا WhiteNoise سرو کنیم.
مراحل جمع آوری فایل های استاتیک
- یک پوشه مقصد با
STATIC_ROOTدرsettings.pyمشخص کن. - دستور
collectstaticرا اجرا کن تا همه فایل ها کپی شوند. - پوشه را بررسی کن و فایل ها را ببین.
- اگر WhiteNoise نصب است، سرو مستقیم انجام می شود.
- سرور را اجرا کن و خروجی را تست کن.
1) تنظیم STATIC_ROOT در settings.py
STATIC_ROOT پوشه نهایی فایل های استاتیک است. مانند انبار مدرسه برای وسایل ورزشی.
# my_tennis_club/my_tennis_club/settings.py
STATIC_ROOT = BASE_DIR / 'productionfiles'
STATIC_URL = 'static/'
نکته: نام پوشه مهم نیست؛ مهم هم خوانی تنظیم و استقرار است.
2) اجرای collectstatic
این دستور همه فایل های لازم را به پوشه مقصد کپی می کند. مثل جمع کردن برگه ها در یک کلاسور.
python manage.py collectstatic
128 static files copied to 'C:\\Users\\your_name\\myworld\\my_tennis_club\\productionfiles'.
نکته: تعداد زیاد به خاطر فایل های رابط کاربری ادمین است؛ فونت، CSS و JS.
3) استفاده از فایل استاتیک در قالب
برچسب static محل فایل را می سازد. مثل مسیریاب ساده برای فایل ها.
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myfirst.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
برای سرو در تولید، نصب WhiteNoise کمک می کند.
4) اجرای سرور و تست خروجی
حالا سرور را اجرا کن و صفحه تست را ببین.
python manage.py runserver
نمونه منبع آدرس http://127.0.0.1:8000/testing/ را پیشنهاد می دهد.
هشدار: در تولید، DEBUG=False باشد و هدرهای کش درست تنظیم شوند.
برای ادامه کار با فایل ها، صفحه افزودن فایل های استاتیک سراسری را ببین.
راهنمای کامل «جمع آوری فایل های استاتیک» همیشه در دسترس است.
جمع بندی سریع
STATIC_ROOTرا در تنظیمات مشخص کن.collectstaticرا اجرا کن و خروجی را چک کن.- فایل های ادمین حجم را بالا می برند؛ طبیعی است.
- با WhiteNoise سرو کن یا وب سرور پیکربندی کن.
- در تولید،
DEBUG=Falseرا فراموش نکن.