موتور نشانه‌گذاری جینجا

Jinja
نویسنده(های)
اصلی
آرمین روناچر
انتشار اولیه۱۷ ژوئیه ۲۰۰۸ (۲۰۰۸-17}})[۱]
انتشار پایدار
3.1.6[۲] ویرایش در ویکی‌داده / ۵ مارس ۲۰۲۵ (۵ مارس ۲۰۲۵-خطا: زمان نامعتبر}})
مخزن
نوشته‌شده باپایتون
نوعموتور الگو
مجوزپروانه‌های بی‌اس‌دی

جینجا (به انگلیسی: Jinja)(برگرفته از نام معبد شینتویی) یک موتور نشانه‌گذاری برای زبان برنامه‌نویسی پایتون است که تحت پروانه بی‌اس‌دی توسط برنامه‌نویس اتریشی آرمین روناچر ساخته شده‌است. از آنجا که که این موتور مبتنی بر متن می‌باشد در نتیجه می‌تواند در زبان‌های نشانه‌گذاری همانند اچ‌تی‌ام‌ال در برنامه‌ها مورد استفاده قرار بگیرد.

موتور جینجا این امکان را می‌دهد تا بتوان برچسب‌ها، فیلترها و … را شخصی‌سازی کرد و با توجه به اینکه در موتور نشانه‌گذاری جنگو امکان فراخوانی توابع وجود ندارد، جینجا این موضوع را میسر می‌سازد.

از جینجا به عنوان موتور نشانه‌گذاری پیشفرض در فلسک استفاده می‌شود.[۳]

ویژگی‌ها

برخی از ویژگی‌های جینجا عبارت‌اند از:[۴]

  • اجرای در محیط شنی (به منظور استفاده برای قطعه کدهایی که احتمالاً مخربند)
  • بررسی و پاکسازی کدهای اچ‌تی‌ام‌ال قدرتمند به صورت خودکار به منظور جلوگیری از حملات تزریق اسکریپت (XSS)
  • ارث‌بری از الگوها
  • اشکال‌زدایی آسان، به همراه اشاره به خطی که در آن خطا رخ داده است.
  • امکان تنظیم Syntax

در زیر یک نمونه کوچک از فایل قالب‌بندی example.html.jinja قابل مشاهده است.[۵]

<!DOCTYPE html>
<html>
     <head>
          <title>{{variable|escape}}</title>
     </head>
     <body>
     {%- for item in item_list %}
          {{item}}{% if not loop.last %},{% endif %}
     {%- endfor %}
     </body>
</html>

و کد قالب‌بندی:

from jinja2 import Template
with open('example.html.jinja') as f:
      tmpl = Template(f.read())
print tmpl.render(
      variable = 'Value with <unsafe> data',
      item_list = [1, 2, 3, 4, 5, 6]
)

که در نهایت خروجی اچ‌تی‌ام‌ال زیر تولید می‌شود:

<!DOCTYPE html>
<html>
    <head>
        <title>Value with &lt;unsafe&gt; data</title>
    </head>
    <body>
        1,
        2,
        3,
        4,
        5,
        6
    </body>
</html>

جستارهای وابسته

منابع

  1. "Jinja2 Release History". Retrieved 24 June 2020.
  2. "Release 3.1.6". 5 مارس 2025. Retrieved 25 March 2025.
  3. DuPlain, Ron (2013-01-01). Instant Flask Web Development (به انگلیسی). Packt Publishing Ltd.
  4. «Welcome to Jinja2 — Jinja2 Documentation (2.8-dev)». jinja.pocoo.org. دریافت‌شده در ۲۰۱۶-۱۱-۱۲.
  5. «Template Designer Documentation — Jinja2 Documentation (2.8-dev)». jinja.pocoo.org. بایگانی‌شده از اصلی در ۱۳ نوامبر ۲۰۱۶. دریافت‌شده در ۲۰۱۶-۱۱-۱۲.

پیوند به بیرون