افزودن فایل های استاتیک سراسری (Add Global Static Files)
گاهی یک «فایل استاتیک سراسری (Global Static File)» می خواهیم. یعنی CSS یا JS که همه اپ ها استفاده کنند. پس باید یک پوشه سراسری بسازیم و به جنگو معرفی کنیم. سپس می توانیم فایل را در همه قالب ها فراخوانی کنیم.
مراحل ساخت پوشه سراسری
- در ریشه پروژه یک پوشه بساز. نام دلخواه است.
- فایل های سراسری را آن جا قرار بده.
- مسیر پوشه را در تنظیمات معرفی کن.
1) ساخت پوشه mystaticfiles
ریشه پروژه مانند حیاط مدرسه است. این پوشه انبار مشترک وسایل است.
my_tennis_club
db.sqlite3
manage.py
my_tennis_club/
members/
mystaticfiles/
2) افزودن فایل CSS سراسری
یک فایل بساز و استایل ساده بگذار. این فایل همه جا در دسترس است.
# my_tennis_club/mystaticfiles/myglobal.css
body {
color: violet;
}
تغییر تنظیمات (STATICFILES_DIRS)
«STATICFILES_DIRS» یعنی فهرست پوشه های سراسری. جنگو از این مسیرها فایل می خواند.
# my_tennis_club/my_tennis_club/settings.py
STATIC_ROOT = BASE_DIR / 'productionfiles'
STATIC_URL = 'static/'
STATICFILES_DIRS = [
BASE_DIR / 'mystaticfiles'
]
نکته: ترتیب پوشه ها مهم است. اگر نام تکراری باشد، اولین فایل استفاده می شود.
استفاده در قالب با برچسب static
برچسب «static» یک مسیر وب معتبر می سازد. مثل مسیر کوتاه شده امن.
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
جمع آوری دوباره فایل های استاتیک
پس از افزودن فایل سراسری، دوباره «collectstatic» اجرا کن. این کار کلاسور را به روز می کند.
python manage.py collectstatic
اجرای سرور و نتیجه
اکنون صفحه نمونه باید درست کار کند. اگر نه، مسیرها را چک کن.
python manage.py runserver
برای آشنایی با جمع آوری، صفحه جمع آوری فایل های استاتیک را ببین.
برای ادامه کار با CSS پروژه، صفحه افزودن فایل CSS به پروژه را بررسی کن.
جمع بندی سریع
- پوشه سراسری بساز و فایل را آن جا بگذار.
- مسیر را در
STATICFILES_DIRSمعرفی کن. - قالب را با برچسب
staticبه روز کن. collectstaticرا دوباره اجرا کن.- ترتیب جست وجو در نام های تکراری مهم است.