قالب ها در Django
در این بخش به بررسی قالب ها در Django می پردازیم، جنگو (Django) به عنوان یکی از محبوبترین فریمورکهای پایتون برای توسعه وب شناخته میشود. این فریمورک امکانات متعددی برای ساخت و پیادهسازی وبسایتها و برنامههای کاربردی ارائه میدهد. یکی از اجزای کلیدی جنگو، سیستم قالببندی آن است که به نام Django Templates شناخته میشود. این سیستم به توسعهدهندگان اجازه میدهد تا به سادگی و با کارایی بالا صفحات وب را سفارشیسازی کرده و محتوای مختلف را به کاربران نمایش دهند. در این مقاله، با اصول Django Templates، نحوه کار با آن و سفارشیسازی محتوای وب بیشتر آشنا خواهیم شد.
قالبها (Templates) در جنگو، ابزارهایی برای ترکیب منطق برنامه با نمایش محتوا هستند. از طریق سیستم قالببندی، میتوان اطلاعات را از پایگاه داده یا منابع دیگر دریافت کرده و در قالب یک صفحه وب به نمایش گذاشت. این ابزار همچنین امکاناتی برای نمایش شرطی، حلقهها، و استفاده از فیلترهای مختلف دارد که باعث میشود مدیریت و نمایش دادهها در صفحات وب سادهتر و مؤثرتر شود. این مقاله تلاش میکند به صورت گام به گام، ساختار Django Templates را بررسی کرده و نحوه استفاده از آن را برای نمایش و سفارشیسازی محتوای وب آموزش دهد.
۱. ساختار کلی Django Template
Django Templates بر اساس ساختاری ساده اما قدرتمند طراحی شدهاند که از تگها، متغیرها و فیلترها تشکیل میشود. این ساختار به توسعهدهندگان اجازه میدهد تا بدون نیاز به پیچیدگیهای HTML و CSS، صفحات دینامیک را ایجاد کنند. قالبهای جنگو در حقیقت فایلهای HTML هستند که دارای تگهای مخصوص جنگو هستند. این تگها و متغیرها به شما امکان میدهند تا دادههای برنامه را در قالبهای HTML نمایش دهید.
به عنوان مثال، یک Template ساده در جنگو ممکن است به صورت زیر باشد:
در این مثال، متغیر user.username
دادهای از سمت سرور دریافت کرده و نام کاربری را در صفحه به نمایش میگذارد. استفاده از متغیرها به شما کمک میکند که دادهها را بدون نیاز به تغییر مداوم HTML نمایش دهید.
۲. تگهای شرطی و حلقهها در Django Template
یکی از قابلیتهای مهم در Django Templates استفاده از تگهای شرطی و حلقههاست. این تگها به شما امکان میدهند تا منطق سادهای را در نمایش محتوای وب پیادهسازی کنید. تگهای شرطی مانند if
برای بررسی شرایط خاص به کار میروند و حلقهها مانند for
برای تکرار محتوا یا نمایش لیستی از دادهها.
به عنوان مثال، در صورتی که بخواهیم لیستی از محصولات را نمایش دهیم، میتوانیم از تگ for
استفاده کنیم:
در این مثال، برای هر محصول در لیست products
، نام و قیمت محصول به نمایش درمیآید. اگر لیست محصولات خالی باشد، میتوانیم با استفاده از تگ if
پیامی به کاربر نمایش دهیم:
۳. استفاده از فیلترها در Django Template
فیلترها در Django Templates برای تغییر نمایش دادهها و اعمال تغییرات کوچک روی متغیرها مورد استفاده قرار میگیرند. با استفاده از فیلترها، میتوانید عملیاتهایی مانند تغییر حروف به کوچک یا بزرگ، قالببندی تاریخ و زمان، و یا حتی محدود کردن تعداد کاراکترهای یک رشته را انجام دهید.
به عنوان مثال، برای نمایش تاریخ در یک قالب خاص میتوان از فیلتر date
استفاده کرد:
<p>تاریخ امروز: {{ date_variable|date:"d M Y" }}</p>
در اینجا، date_variable
به قالبی مانند 25 Sep 2024
تبدیل میشود. فیلترهای دیگر مانند lower
و length
نیز وجود دارند که هر کدام عملیات مشخصی را انجام میدهند. برای مثال، lower
تمامی حروف یک رشته را به حروف کوچک تبدیل میکند:
<p>{{ user.username|lower }}</p>
۴. بارگذاری قالبها با استفاده از include
و extends
در بسیاری از موارد، لازم است که بخشهایی از قالبها را در چندین صفحه تکرار کنید، مثلاً هدر، فوتر یا منوها. برای جلوگیری از تکرار کد، جنگو به شما اجازه میدهد از تگهای include
و extends
استفاده کنید. این تگها به شما امکان میدهند تا بخشهای مشترک را به صورت جداگانه تعریف کرده و سپس آنها را در قالبهای مختلف بارگذاری کنید.
به عنوان مثال، فرض کنید یک فایل header.html
داریم که شامل کد هدر است. برای بارگذاری این هدر در قالب اصلی، میتوانیم از تگ include
استفاده کنیم:
{% include 'header.html' %}
تگ extends
نیز به شما این امکان را میدهد که یک قالب پایه ایجاد کنید و سایر صفحات از آن قالب ارثبری کنند. به عنوان مثال، اگر قالب پایهای به نام base.html
داشته باشید، میتوانید سایر قالبها را با استفاده از این تگ توسعه دهید:
{% extends 'base.html' %}
۵. بهینهسازی نمایش با استفاده از بلوکها
بلوکها (Blocks) در جنگو به شما امکان میدهند که بخشهای مختلف قالبها را در صفحات فرعی بازنویسی کنید. این ویژگی به ویژه در ترکیب با extends
کاربردی است و به شما اجازه میدهد تا بخشهای مختلفی از یک قالب پایه را در صفحات مختلف تغییر دهید.
به عنوان مثال، فرض کنید که قالب پایه شما شامل بلوکهای content
و sidebar
باشد. شما میتوانید این بلوکها را در صفحات فرعی بازنویسی کنید:
با استفاده از بلوکها، میتوان محتوای متنوعی را در صفحات مختلف به نمایش گذاشت و بدون تغییر در قالب پایه، ساختار صفحات را متنوع و پویا کرد.
سیستم Django Templates یکی از ابزارهای قدرتمند در جنگو است که به شما اجازه میدهد تا وبسایتهای دینامیک و انعطافپذیر ایجاد کنید. با استفاده از تگها، فیلترها، و بلوکها میتوانید به سادگی صفحات وب خود را مدیریت کرده و اطلاعات را به کاربران به شکل حرفهای و کارآمد نمایش دهید. برای مطالعه بیشتر میتوانید به مستندات رسمی جنگو مراجعه کنید:
این مقاله به شما کمک میکند تا درک بهتری از Django Templates پیدا کنید و از قابلیتهای آن برای سفارشیسازی و نمایش محتوای وب بهرهمند شوید.
آیا این مطلب برای شما مفید بود ؟