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

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

در 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)


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