شش تگ تمپلیت جنگو، که در هر آموزشی پیدا نمیکنید
جنگو یک چارچوب قدرتمند برای ایجاد برنامه های وب در پایتون است. ویژگی های آن شامل مدل های پایگاه داده ، URL های مسیریابی ، احراز هویت ، مدیریت کاربر ، ابزارهای مدیریتی و زبان قالب است. می توانید HTML قابل استفاده مجدد بسازید که بر اساس داده هایی که به زبان الگو ارسال می کنید تغییر می کند. قالب های جنگو از تگها و فیلترها برای تعریف یک زبان کوچک شبیه به پایتون استفاده می کنند-اما پایتون نیست.
در این مقاله شش تگ template جنگو را مرور خواهید که مورد کم لطفی قرار گرفتهاند.
دوره پیشنهادی: دوره اول آموزش جنگو(django)
1. For … empty
تگ for، یک عبارت اختیاری {%empty%} را دریافت میکند که در صورت خالی بودن آرایه، یا خارج از دسترس بودن، متنش نمایش داده میشود.
{% for student in student_list %}
...
{% empty %}
...
{% endfor %}
که برابر با مورد زیر است :
{% if student-list %}
{% for student in student_list %}
...
{% endfor %}
{% else %}
...
{% endif %}
ویدیو پیشنهادی: ویدیو آموزش ساخت template tag در جنگو
2. lorem
خیر، شما به هیچ بسته دیگری، یا کپی/ انتقال متن lorem نیازی ندارید.این تگ، متن لاتین تصادفی "lorem ipsum" را نمایش میدهد. این تگ، یک ابزار مفید برای ایجاد نمونه دادهها در تمپلیت ها است. البته حالت برعکس هنگامی است که به آن دسترسی ندارید.
{% lorem [count] [method] [random] %}
مثال :
- {%lorem%} پاراگراف مشترک "lorem ipsum" را در خروجی ایجاد میکند.
- {% lorem 3 up%} پاراگراف مشترک "lorem ipsum" ، و دو پاراگراف تصادفی، که هر کدام در تگهای <p> html پیچانده شدهاند را در خروجی ایجاد میکند.
- {% lorem 2 w random%} دو کلمه لاتین تصادفی را در خروجی ایجاد میکند.
3. now
تاریخ و زمان فعلی را نشان میدهد. این نمایش مطابق فرمت، و رشته مشخص شده صورت میگیرد. چنین رشتهای میتواند شامل کاراکترهای تعریف رشته، مطابق توضیحات ارائه شده در بخش فیلتر تاریخ باشد.
{% npw "jS F Y" %}
ویدیو پیشنهادی: ویدیو آموزش ساخت template filter در جنگو
4. Resetcycle
یکی از چرخههای قبلی را راه اندازی مجدد میکند. لذا در مواجهه بعدی، از اولین مؤلفهاش، تحت راه اندازی مجدد قرار میگیرد. بدون آرگومانها، {% resetcycle%}، آخرین {%cycle%} تعریف شده در تمپلیت را بازیابی میکند.
{% for coach in coach_list %}
{{ coach.name }}
{% for athlete in coach.athlete_set.all %}
<p class="{ cycle 'odd' 'even' }>
{{ athlete.name }}
</p>
{% endfor %}
{% resetcycle %}
{% endfor %}
این مثال، این کد HTML را برگشت میدهد.
<h1>José Mourinho</h1>
<p class="odd">Thibaut Courtois</p>
<p class="even">John Terry</p>
<p class="odd">Eden Hazard</p>
<h1>Carlo Ancelotti</h1>
<p class="odd">Manuel Neuer</p>
<p class="even">Thomas Müller</p>
مقاله پیشنهادی: بازبینی فریمورک جنگو - مزایا و معایب
5. verbatim
- رندرینگ محتواهای تگ بلوکی، توسط موتور تمپلیت متوقف میشود.
- یک کاربرد رایج، مجازسازی یک لایه تمپلیت جاوا اسکریپت است ، که با سینتکس جنگو تداخل دارد.
برای مثال
{% verabtim %}
{{ if dying }} Still alive. {{/if}}
{% endverbatim %}
همچنین میتوانید یک تگ پایانی خاص را طراحی بکنید. بدین ترتیب امکان استفاده از {% endverbatim%}، به عنوان بخشی از محتوای رندر نشده فراهم میشود.
{% verbatim myblock %}
از رندرکردن تمپلیت، بر اساس دستور زیر اجتناب ورزید
{% verbatim %}
{% endverbatim %} block.
{% endverbatim myblock %}
6. widthratio
این تگ نسبت مقدار اعمالی، به مقدار حداکثری را محاسبه میکند و برای ساخت نمودار میلهای، و موارد مشابه کاربرد دارد. سپس این نسبت به یک مقدار ثابت اعمال میشود.
<img src="#" alt="Imagine an image here"
height="10" width="{ % widthratio this_value max_value max_width % }">
اگر this_value 175 باشد، max_value 200 باشد، و max_width 100 باشد، تصویر مثال فوق عرضی به اندازه 88 پیکسل خواهد داشت (زیرا 0.875=200/175 * 100 = 87.5 که با گردن کردن 88 میشود).
گاهی اوقات، شما خواهان ثبت نتایج نسبت عرض، در یک متغیر هستید. لذا این تگ در یک بلوک ترانس همچون مورد زیر، مفید واقع میشود.
{% widthratio this_value max_value max_width as width %}
{% blocktrans %}The width is: {{ width }}{%endblocktrans%}