شرط if/else (If Else)
در قالب های جنگو، «شرط (If)» یعنی تصمیم گیری. سپس خروجی HTML بر اساس شرط ساخته می شود. مثل زنگ تفریح که اگر زنگ خورد، می رویم حیاط.
تعریف شرط if
با if یک متغیر بررسی می شود. سپس اگر درست بود، بلاک اجرا می شود.
{% if greeting == 1 %}
<h1>Hello</h1>
{% endif %}
elif: شرط بعدی
«elif» یعنی اگر قبلی نبود، این یکی را بسنج. سپس همانجا تصمیم بگیر.
{% if greeting == 1 %}
<h1>Hello</h1>
{% elif greeting == 2 %}
<h1>Welcome</h1>
{% endif %}
else: در غیر این صورت
«else» همه حالت های دیگر را می گیرد. سپس خروجی پیش فرض را می دهد.
{% if greeting == 1 %}
<h1>Hello</h1>
{% elif greeting == 2 %}
<h1>Welcome</h1>
{% else %}
<h1>Goodbye</h1>
{% endif %}
بررسی تهی بودن متغیر
می توانی بدون عملگر، فقط «خالی نبودن» را بسنجی. این یعنی مقدار دارد.
{% if greeting %}
<h1>Hello</h1>
{% endif %}
عملگرهای مقایسه
برخی عملگرهای رایج: مساوی، نابرابر، کوچکتر، کوچکتر یا مساوی، بزرگتر، بزرگتر یا مساوی.
{% if greeting == 2 %}
<h1>Hello</h1>
{% endif %}
{% if greeting != 1 %}
<h1>Hello</h1>
{% endif %}
{% if greeting < 3 %}
<h1>Hello</h1>
{% endif %}
{% if greeting <= 3 %}
<h1>Hello</h1>
{% endif %}
{% if greeting > 1 %}
<h1>Hello</h1>
{% endif %}
{% if greeting >= 1 %}
<h1>Hello</h1>
{% endif %}
ترکیب شرط ها: and، or
«and» یعنی هر دو شرط درست باشند. «or» یعنی یکی کافی است.
{% if greeting == 1 and day == "Friday" %}
<h1>Hello Weekend!</h1>
{% endif %}
{% if greeting == 1 or greeting == 5 %}
<h1>Hello</h1>
{% endif %}
ترکیب and و or بدون پرانتز
پرانتز در if مجاز نیست. سپس جنگو عملاً برای and پرانتز ضمنی می گذارد.
{% if greeting == 1 and day == "Friday" or greeting == 5 %}
{% if (greeting == 1 and day == "Friday") or greeting == 5 %}
عضویت: in / not in
«in» وجود عضو را می سنجد. «not in» نبودن را بررسی می کند.
{% if 'Banana' in fruits %}
<h1>Hello</h1>
{% else %}
<h1>Goodbye</h1>
{% endif %}
{% if 'Banana' not in fruits %}
<h1>Hello</h1>
{% else %}
<h1>Goodbye</h1>
{% endif %}
همان شیء بودن: is / is not
«is» برابری هویت شیء را می سنجد. با «==» تفاوت دارد.
from django.http import HttpResponse
from django.template import loader
def testing(request):
template = loader.get_template('template.html')
context = {
'x': ['Apple', 'Banana', 'Cherry'],
'y': ['Apple', 'Banana', 'Cherry'],
}
return HttpResponse(template.render(context, request))
{% if x is y %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}
{% if x == y %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}
{% with var1=x var2=x %}
{% if var1 is var2 %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}
{% endwith %}
{% if x is not y %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}
گام های عملی
- متغیر «greeting» را در ویو تنظیم کن.
- در قالب، if و elif و else را تست کن.
- سپس عملگرهای and و or را ترکیب کن.
- در پایان، خروجی HTML را بررسی کن.
جمع بندی سریع
- if تصمیم می گیرد؛ else پوشش باقی حالت هاست.
- elif برای شرط دوم است.
- and یعنی هر دو؛ or یعنی یکی.
- in برای عضویت؛ is برای هویت شیء.
برای مرور کلی تگ ها، به تگ ها سر بزن. همچنین مثال های متغیرها را تمرین کن. اگر لازم شد، همین صفحه شرط if/else را نشانه گذاری کن.