Django for sikli
for sikllari
for sikli ketma-ketlik bo‘ylab iteratsiya qilish uchun ishlatiladi, masalan, massiv, ro‘yxat (list) yoki lug‘at (dictionary) elementlarini aylanib chiqish uchun.
Misol
Ro‘yxat elementlarini sikl orqali aylanib chiqish:
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
Misolni ishga tushirish »
Misol
Lug‘atlar (dictionary) ro‘yxatini sikl orqali aylanib chiqish:
{% for x in cars %}
<h1>{{ x.brand }}</h1>
<p>{{ x.model }}</p>
<p>{{ x.year }}</p>
{% endfor %}
Misolni ishga tushirish »
Modeldan olingan ma’lumotlar
Modeldagi ma’lumotlar qator va ustunlardan iborat jadvalga o‘xshaydi.
Avvalroq yaratgan Member modelimizda beshta qator bor va har bir qatorda uchta ustun bor:
| id | firstname | lastname | phone | joined_date |
|---|---|---|---|---|
| 1 | Emil | Refsnes | 5551234 | 2022-01-05 |
| 2 | Tobias | Refsnes | 5557777 | 2022-04-01 |
| 3 | Linus | Refsnes | 5554321 | 2021-12-24 |
| 4 | Lene | Refsnes | 5551234 | 2021-05-01 |
| 5 | Stalikken | Refsnes | 5559876 | 2022-09-29 |
Modeldan ma’lumot olganimizda, u yuqoridagi cars misoliga o‘xshash formatdagi QuerySet obyekti shaklida keladi: lug‘atlardan iborat ro‘yxat:
<QuerySet [
{
'id': 1,
'firstname': 'Emil',
'lastname': 'Refsnes',
'phone': 5551234,
'joined_date': datetime.date(2022, 1, 5)
},
{
'id': 2,
'firstname': 'Tobias',
'lastname': 'Refsnes'
'phone': 5557777,
'joined_date': datetime.date(2021, 4, 1)
},
{
'id': 3,
'firstname': 'Linus',
'lastname': 'Refsnes'
'phone': 5554321,
'joined_date': datetime.date(2021, 12, 24)
},
{
'id': 4,
'firstname': 'Lene',
'lastname': 'Refsnes'
'phone': 5551234,
'joined_date': datetime.date(2021, 5, 1)
},
{
'id': 5,
'firstname': 'Stalikken',
'lastname': 'Refsnes'
'phone': 5559876,
'joined_date': datetime.date(2022, 9, 29)
}
]>
Misol
Ma’lumotlar bazasidan olingan elementlarni sikl orqali aylanib chiqish:
{% for x in members %}
<h1>{{ x.id }}</h1>
<p>
{{ x.firstname }}
{{ x.lastname }}
</p>
{% endfor %}
Misolni ishga tushirish »
Reversed
reversed kalit so‘zi siklni teskari tartibda bajarmoqchi bo‘lganingizda ishlatiladi.
Misol
{% for x in members reversed %}
<h1>{{ x.id }}</h1>
<p>
{{ x.firstname }}
{{ x.lastname }}
</p>
{% endfor %}
Misolni ishga tushirish »
Empty
Obyekt bo‘sh bo‘lganda qandaydir maxsus amal bajarmoqchi bo‘lsangiz, empty kalit so‘zidan foydalanishingiz mumkin.
Misol
<ul>
{% for x in emptytestobject %}
<li>{{ x.firstname }}</li>
{% empty %}
<li>No members</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
empty kalit so‘zidan obyekt mavjud bo‘lmaganda ham foydalanish mumkin:
Misol
<ul>
{% for x in myobject %}
<li>{{ x.firstname }}</li>
{% empty %}
<li>No members</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
Sikl o‘zgaruvchilari
Django’da sikl ichida foydalanishingiz mumkin bo‘lgan bir nechta o‘zgaruvchi bor:
- forloop.counter
- forloop.counter0
- forloop.first
- forloop.last
- forloop.parentloop
- forloop.revcounter
- forloop.revcounter0
forloop.counter
Joriy iteratsiya, 1 dan boshlab.
Misol
<ul>
{% for x in fruits %}
<li>{{ forloop.counter }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
forloop.counter0
Joriy iteratsiya, 0 dan boshlab.
Misol
<ul>
{% for x in fruits %}
<li>{{ forloop.counter0 }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
forloop.first
Sikl birinchi iteratsiyada ekanligini tekshirish imkonini beradi.
Misol
Siklning birinchi iteratsiyasi uchun ko‘k fon chizish:
<ul>
{% for x in fruits %}
<li
{% if forloop.first %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
forloop.last
Sikl oxirgi iteratsiyada ekanligini tekshirish imkonini beradi.
Misol
Siklning oxirgi iteratsiyasi uchun ko‘k fon chizish:
<ul>
{% for x in fruits %}
<li
{% if forloop.last %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
forloop.revcounter
Oxiridan boshlab teskari sanalgandagi joriy iteratsiya, 1 da tugaydi.
Misol
<ul>
{% for x in fruits %}
<li>{{ forloop.revcounter }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
forloop.revcounter0
Oxiridan boshlab teskari sanalgandagi joriy iteratsiya, 0 da tugaydi.
Misol
<ul>
{% for x in fruits %}
<li>{{ forloop.revcounter0 }}</li>
{% endfor %}
</ul>
Misolni ishga tushirish »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
