فهرست سرفصل‌های Django
خانه (Home) مقدمه (Intro) شروع به کار (Get Started) ساخت محیط مجازی (Create Virtual Environment) نصب (Install Django) ساخت پروژه (Create Project) ساخت اپ (Create App) ویوها (Views) آدرس ها (URLs) قالب ها (Templates) مدل ها (Models) افزودن داده (Insert Data) به روزرسانی داده (Update Data) حذف داده (Delete Data) به روزرسانی مدل (Update Model) آماده سازی قالب و ویو (Prep Template and View) افزودن لینک به جزئیات (Add Link to Details) افزودن قالب مادر (Add Master Template) افزودن صفحه ایندکس اصلی (Add Main Index Page) قالب 404 (404 Template) افزودن ویوی تست (Add Test View) پنل مدیریت (Admin) ساخت کاربر (Create User) افزودن مدل ها (Include Models) تنظیم List Display (Set List Display) به روزرسانی اعضا (Update Members) افزودن اعضا (Add Members) حذف اعضا (Delete Members) متغیرها (Variables) تگ ها (Tags) شرط if/else (If Else) حلقه for (For Loop) کامنت (Comment) include (Include) معرفی QuerySet (QuerySet Introduction) متد get (QuerySet Get) فیلتر (QuerySet Filter) مرتب سازی (QuerySet Order By) افزودن فایل های استاتیک (Add Static Files) نصب WhiteNoise (Install WhiteNoise) جمع آوری فایل های استاتیک (Collect Static Files) افزودن فایل های استاتیک سراسری (Add Global Static Files) افزودن استایل به پروژه (Add Styles to the Project) مقدمه (PostgreSQL Intro) ساخت حساب AWS (Create AWS Account) ساخت دیتابیس در RDS (Create Database in RDS) اتصال به دیتابیس (Connect to Database) افزودن اعضا (Add Members) Elastic Beanstalk (EB) ساخت requirements.txt (Create requirements.txt) ساخت django.config (Create django.config) ساخت فایل zip (Create .zip File) استقرار با EB (Deploy with EB) به روزرسانی پروژه (Update Project) افزودن فیلد slug (Add Slug Field) افزودن Bootstrap 5 (Add Bootstrap 5) مرجع تگ های قالب (Template Tag Reference) مرجع فیلترها (Filter Reference) مرجع Field Lookups (Field lookups Reference) کامپایلر (Compiler) تمرین ها (Exercises) آزمون (Quiz) سرفصل (Syllabus) برنامه مطالعه (Study Plan) سرور (Server) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
Django

Django — حلقه for (For Loop)

آخرین بروزرسانی: 1404/08/20

حلقه for (For Loop)

در قالب های جنگو، «حلقه for» یعنی تکرار روی مجموعه. مثل حضور و غیاب کلاس که اسم ها را یکی یکی می خوانیم. سپس برای هر مورد، بخشی از HTML ساخته می شود.

حلقه روی لیست ساده

با for روی لیست می چرخیم. سپس هر عضو را نمایش می دهیم.

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

مشاهده در ادیتور

حلقه روی لیست دیکشنری ها

هر خودرو یک دیکشنری است. سپس فیلدها را جداگانه چاپ کن.

{% for x in cars %}
  <h1>{{ x.brand }}</h1>
  <p>{{ x.model }}</p>
  <p>{{ x.year }}</p>
{% endfor %}

مشاهده در ادیتور

داده از مدل

خروجی کوئری مدل شبیه لیست دیکشنری هاست. سپس مانند بالا حلقه بزن.

{% for x in members %}
  <h1>{{ x.id }}</h1>
  <p>
    {{ x.firstname }}
    {{ x.lastname }}
  </p>
{% endfor %}

مشاهده در ادیتور

ordre معکوس با reversed

با «reversed» از آخر به اول می چرخیم. سپس همان فیلدها را می نویسیم.

{% for x in members reversed %}
  <h1>{{ x.id }}</h1>
  <p>
    {{ x.firstname }}
    {{ x.lastname }}
  </p>
{% endfor %}

مشاهده در ادیتور

حالت خالی با empty

اگر لیست خالی بود، بلاک «empty» اجرا می شود. سپس پیام بده.

<ul>
  {% for x in emptytestobject %}
    <li>{{ x.firstname }}</li>
  {% empty %}
    <li>No members</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

نکته: اگر شیء وجود نداشت هم «empty» کار می کند.

<ul>
  {% for x in myobject %}
    <li>{{ x.firstname }}</li>
  {% empty %}
    <li>No members</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

متغیرهای کمکی حلقه

جنگو درون حلقه، متغیرهای مفیدی می دهد. مانند شمارنده و اولین/آخرین.

forloop.counter

شماره تکرار از 1. سپس می توانی شماره ردیف بگذاری.

<ul>
  {% for x in fruits %}
    <li>{{ forloop.counter }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

forloop.counter0

شماره تکرار از 0. برای ایندکس آرایه مناسب است.

<ul>
  {% for x in fruits %}
    <li>{{ forloop.counter0 }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

forloop.first / forloop.last

اولین یا آخرین تکرار را تشخیص بده. سپس استایل بده.

<ul>
  {% for x in fruits %}
    <li
      {% if forloop.first %}
        style='background-color:lightblue;'
      {% endif %}
    >{{ x }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

<ul>
  {% for x in fruits %}
    <li
      {% if forloop.last %}
        style='background-color:lightblue;'
      {% endif %}
    >{{ x }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

forloop.revcounter / revcounter0

شمارنده معکوس از انتها. سپس شماره گذاری نزولی بساز.

<ul>
  {% for x in fruits %}
    <li>{{ forloop.revcounter }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

<ul>
  {% for x in fruits %}
    <li>{{ forloop.revcounter0 }}</li>
  {% endfor %}
</ul>

مشاهده در ادیتور

گام های عملی

  1. یک لیست ساده در context بفرست.
  2. روی لیست حلقه بزن و آیتم ها را چاپ کن.
  3. empty و reversed را امتحان کن.
  4. از forloop.counter برای شماره گذاری استفاده کن.

جمع بندی سریع

  • for روی مجموعه تکرار می کند.
  • empty برای حالت خالی است.
  • reversed ترتیب را برعکس می کند.
  • متغیرهای forloop خیلی کاربردی اند.

برای شرط ها، صفحه حلقه for و تگ ها را کنار هم تمرین کن. همچنین بخش متغیرها با همین مثال ها هماهنگ است.