Django for sikli


ULASHISH

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!