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

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به ناوبری پرش به جستجو

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

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

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

ویژگی‌ها[ویرایش]

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

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

مثال[ویرایش]

در زیر یک نمونه کوچک از فایل جینجا قابل مشاهده است.[۳]

 1 <!DOCTYPE html>
 2 <html>
 3      <head>
 4           <title>{{variable|escape}}</title>
 5      </head>
 6      <body>
 7      {%- for item in item_list %}
 8           {{item}}{% if not loop.last %},{% endif %}
 9      {%- endfor %}
10      </body>
11 </html>

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

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

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

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <title>Value with &lt;unsafe&gt; data</title>
 5     </head>
 6     <body>
 7         1,
 8         2,
 9         3,
10         4,
11         5,
12         6
13     </body>
14 </html>

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. DuPlain, Ron. Instant Flask Web Development. Packt Publishing Ltd, 2013-01-01. ISBN ‎9781782169635. 
  2. «Welcome to Jinja2 — Jinja2 Documentation (2.8-dev)». jinja.pocoo.org. بازبینی‌شده در 2016-11-12. 
  3. «Template Designer Documentation — Jinja2 Documentation (2.8-dev)». jinja.pocoo.org. بازبینی‌شده در 2016-11-12. 

پیوند به بیرون[ویرایش]