Jinja محرك قوالب سريع ومعبّر وقابل للتوسيع للغة Python، ويُستخدم على نطاق واسع في Flask وAnsible.
محددات الصياغة
{% ... %} # عبارات التحكم (حلقات، شروط، تعريف كتل)
{{ ... }} # تعبيرات تُقيّم وتُطبع في مخرج القالب
{# ... #} # تعليقات القالب (تُزال من المخرج النهائي)
المتغيرات والفلاتر
<h1>Hello {{ user.name | capitalize }}</h1>
<p>{{ article.body | truncate(150) | safe }}</p>
<p>Items count: {{ items | length }}</p>
فلاتر شائعة: capitalize, lower, upper, title, trim, striptags, join, default, safe.
بنى التحكم
الشروط
{% if user.is_authenticated %}
<p>Welcome back, {{ user.name }}!</p>
{% elif user.is_invited %}
<p>Please complete your registration.</p>
{% else %}
<a href="/login">Sign in</a>
{% endif %}
الحلقات
<ul>
{% for item in items %}
<li class="{{ 'odd' if loop.odd else 'even' }}">
{{ loop.index }}: {{ item.title }}
</li>
{% else %}
<li>No items available.</li>
{% endfor %}
</ul>
مساعدات الحلقة: loop.index (يبدأ من 1)، loop.index0 (يبدأ من 0)، loop.first، loop.last، loop.length.
وراثة القوالب
التخطيط الأساسي (base.html):
<!DOCTYPE html>
<html>
<head><title>{% block title %}My Site{% endblock %}</title></head>
<body>
<main>{% block content %}{% endblock %}</main>
</body>
</html>
القالب الابن:
{% extends "base.html" %}
{% block title %}Dashboard - My Site{% endblock %}
{% block content %}
<h1>Welcome to your Dashboard</h1>
{% endblock %}