در آموزش شروع کار با Django به شما نشان دادم چطور یک سایت Django راهاندازی کنید. اما Templateهایی که رندر کردیم خیلی ساده بودند.
قطعاً نمیخواهید سایتتان اینقدر ساده به نظر برسد.
چطور ظاهر سایت را بهتر کنیم؟ ساده است — کمی استایل اضافه کنید. در این آموزش نشان میدهم چطور CSS و JavaScript را به Django templates اضافه کنید تا ظاهرشان بهتر شود. برای این کار ابتدا باید مفهوم Static Files در Django را بفهمید.
راهاندازی پروژه Django
ابتدا یک پوشه به نام projects بسازید:
داخل آن با virtualenv محیط بسازید:
اگر virtualenv ندارید:
حالا محیط را فعال کنید:
اگر درست باشد باید (env) در ترمینال ببینید.
حالا Django نصب کنید:
سپس پروژه بسازید:
و وارد پوشه شوید.
ساختار باید شبیه این باشد:
├─ djangotemplates
│ ├─ __init__.py
│ ├─ settings.py
│ ├─ urls.py
│ └─ wsgi.py
└─ manage.py
تنظیمات Static Files
Static files شامل CSS، JavaScript و تصاویر هستند.
در settings.py این خط هست:
یعنی Django هنگام جستجوی فایلهای استاتیک مسیر /static/ را به URL اضافه میکند.
حالا اینها را اضافه کنید:
os.path.join(BASE_DIR, ‘static’),
)STATIC_ROOT = os.path.join(BASE_DIR, ‘staticfiles’)
-
STATICFILES_DIRS→ محل جستجوی فایلهای استاتیک -
STATIC_ROOT→ محل جمعآوری فایلها هنگام اجرای collectstatic
ساخت پوشه static
در ریشه پروژه پوشه static بسازید:
├─ css/
│ └─ main.css
└─ js/
└─ main.js
ساخت Django app
در settings.py داخل INSTALLED_APPS اضافه کنید:
تعریف URL
در urls اصلی:
در example/urls.py:
url(r’^$’, views.HomePageView.as_view(), name=‘home’),
url(r’^about/$’, views.AboutPageView.as_view(), name=‘about’),
]
ساخت Templateها
در پوشه templates فایلها:
about.html
ساخته میشوند.
در Templateها میتوان لینکها را با:
ساخت.
این قابلیت URL reverse lookup است.
اتصال Viewها
در views.py:
from django.views.generic import TemplateView
class HomePageView(TemplateView):
template_name = “index.html”
class AboutPageView(TemplateView):
template_name = “about.html”
اجرای پروژه:
python manage.py runserver
Template Inheritance (ارثبری قالب)
به جای تکرار کد، یک base.html بسازید:
<script src=”{% static ‘js/main.js’ %}”></script>
<link rel=”stylesheet” href=”{% static ‘css/main.css’ %}”>
خط
به موتور Template میگوید از فایلهای static استفاده کند.
در base میتوان Block تعریف کرد:
{% block pagecontent %}{% endblock %}
و در قالبها:
استایل دادن با CSS
در main.css:
background: #eac656;
border: 3px solid black;
}
ارسال داده از View به Template
در views.py:
‘data’: [
{‘name’:‘Celeb 1’,‘worth’:‘3567892’},
]
}
return render(request,‘data.html’,context)
در Template:
{{ celebrity.name }}
{% endfor %}
نمایش متغیرها با:
استفاده از snippet (include)
مثلاً navigation جدا بسازید:
و داخل template:
Filters در Django
Filterها داده را فرمت میکنند.
برای humanize:
در settings:
در template:
{{ celebrity.worth|intcomma }}
مثلاً:
جمعآوری Static Files
این دستور همه فایلهای استاتیک را در پوشه STATIC_ROOT جمع میکند (مهم برای production).
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران