تگ Extends


تگ {% extends %} در جنگو برای ارث‌بری از یک تمپلیت پایه استفاده می‌شود. به بیان ساده، وقتی تمپلیتی از extends استفاده کند، یعنی محتوای آن بر اساس یک قالب والد (Parent Template) ساخته خواهد شد.

در این روش ابتدا یک تمپلیت اصلی (مثلاً base.html) تعریف می‌شود و سپس صفحات دیگر با استفاده از تگ extends محتوای خود را در بخش‌های مشخص‌شده به آن اضافه می‌کنند. به این ترتیب هر صفحه می‌تواند محتوای متفاوتی داشته باشد، اما همگی از ساختار اصلی یکسانی پیروی می‌کنند.

مزیت این کار این است که نیاز به تکرار کدها از بین می‌رود. به کمک extends می‌توان بارها از یک قالب پایه و حتی متغیرهای آن استفاده کرد و فقط بخش‌های متغیر را در هر صفحه تغییر داد.

{% extends 'base.html' %}

 
تگ {% extends %} یک آرگومان ورودی می‌گیرد که نام تمپلیت والد (Parent Template) است. وقتی یک تمپلیت فرزند که از extends استفاده می‌کند، رندر می‌شود، جنگو ابتدا تمپلیت والد را به‌عنوان یک اسکلت اصلی بارگذاری می‌کند و سپس محتوای فرزند را طبق بلوک‌های تعریف‌شده با {% block %} ... {% endblock %} در جای مناسب قرار می‌دهد.

تگ {% extends %} باید اولین تگ در تمپلیت باشد (قبل از هر تگ دیگری، حتی تگ‌های بارگذاری مثل {% load %}). در غیر این صورت، جنگو آن را نادیده می‌گیرد و ارث‌بری انجام نخواهد شد.