Γρήγορη αναφορά

Σκονάκι Προτύπων (Templates) Jinja & Jinja2

Γρήγορος οδηγός αναφοράς για τη σύνταξη προτύπων Jinja σε Python/Flask: μεταβλητές, φίλτρα, δομές ελέγχου, βρόχοι, κληρονομικότητα προτύπων και μακροεντολές.

· Δημοσιεύτηκε

Η 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 %}

Αναφορές

Σχετικά θέματα