Jinja چیست و چطور کمک می کنه

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/11/14
  • تعداد بازدید: 136

در Flask، قالب‌ها توسط موتور Jinja2 رندر می‌شوند. Jinja2 یک موتور قالب‌سازی قدرتمند برای Python است که به شما اجازه می‌دهد HTML داینامیک ایجاد کنید، داده‌ها را از پایتون پاس دهید و عملیات منطقی ساده روی قالب انجام دهید.

توانایی‌های Jinja2 در Flask

  • تزریق متغیرها: نمایش مقادیر پاس داده شده از Flask با استفاده از {{ variable }}.
  • حلقه‌ها (Loops): تکرار روی لیست‌ها یا دیکشنری‌ها با {% for item in list %} ... {% endfor %}.
  • شرط‌ها (Conditions): نمایش محتوای مختلف با {% if condition %} ... {% elif %} ... {% else %} ... {% endif %}.
  • فیلترها (Filters): تغییر شکل داده‌ها قبل از نمایش، مثل {{ name|upper }} یا {{ price|round(2) }}.
  • توابع و ماکروها (Macros): تعریف بلوک‌های قابل استفاده مجدد در قالب‌ها.
  • وراثت قالب (Template Inheritance): ساختار صفحات مشابه با استفاده از {% extends "base.html" %} و {% block content %} ... {% endblock %}.
  • وارد کردن فایل‌ها (Include): استفاده از {% include "header.html" %} برای افزودن بخش‌های مشترک.

نمونه استفاده از Jinja2

<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>صفحه نمونه</title>
</head>
<body>
    <h1>سلام {{ user }}!</h1>

    {% if age >= 18 %}
        <p>شما بزرگسال هستید.</p>
    {% else %}
        <p>شما کودک هستید.</p>
    {% endif %}

    <h2>رنگ‌ها:</h2>
    <ul>
        {% for color in colors %}
            <li>{{ color|capitalize }}</li>
        {% endfor %}
    </ul>
</body>
</html>

در این مثال:

  • با {{ user }} نام کاربر نمایش داده می‌شود.
  • با شرط {% if %} بررسی می‌کنیم که سن بزرگسال است یا خیر.
  • با حلقه {% for %} روی لیست رنگ‌ها تکرار کرده و از فیلتر |capitalize برای بزرگ کردن حرف اول استفاده می‌کنیم.

به این ترتیب Jinja2 به شما انعطاف و قدرت می‌دهد تا صفحات HTML داینامیک با منطق ساده بسازید و محتوای Python را به راحتی به قالب‌ها پاس دهید.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد
0/600

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.