Template Syntax
Ubex verwendet Pongo2, eine leistungsstarke Template Engine im Django/Jinja2-Stil. Damit haben Sie die volle Kontrolle darüber, wie Daten durch Ihre Workflows fließen.
Einfache Variablen
Verwenden Sie doppelte geschweifte Klammern, um Variablen auszugeben:
{{ variable_name }}
{{ user.name }}
{{ items[0].title }}
Filter
Transformieren Sie Werte mithilfe von Filtern und dem Pipe-Operator |:
{{ name | upper }}
{{ text | lower }}
{{ price | floatformat:2 }}
{{ items | length }}
{{ description | truncatechars:100 }}
{{ html_content | safe }}
{{ list | join:", " }}
{{ date | date:"2006-01-02" }}
{{ value | default:"N/A" }}
Häufig verwendete Filter
| Filter | Beschreibung | Beispiel |
|---|---|---|
upper |
Text in Großbuchstaben | {{ name | upper }} |
lower |
Text in Kleinbuchstaben | {{ name | lower }} |
title |
Groß-/Kleinschreibung wie bei Titeln | {{ name | title }} |
length |
Elemente/Zeichen zählen | {{ items | length }} |
default |
Ersatzwert | {{ value | default:"none" }} |
join |
Array-Elemente verbinden | {{ tags | join:", " }} |
first |
Erstes Element | {{ items | first }} |
last |
Letztes Element | {{ items | last }} |
truncatechars |
Zeichenanzahl begrenzen | {{ text | truncatechars:50 }} |
safe |
HTML rendern | {{ html | safe }} |
floatformat |
Dezimalstellen formatieren | {{ price | floatformat:2 }} |
Bedingungen
Verwenden Sie {% if %} für bedingte Logik:
{% if user.is_premium %}
Welcome back, premium member!
{% elif user.is_trial %}
Your trial ends in {{ user.trial_days }} days.
{% else %}
Sign up for premium features.
{% endif %}
Vergleichsoperatoren
{% if count > 10 %}...{% endif %}
{% if status == "active" %}...{% endif %}
{% if name != "" %}...{% endif %}
{% if score >= 80 %}...{% endif %}
{% if items and items | length > 0 %}...{% endif %}
{% if not is_disabled %}...{% endif %}
Logische Operatoren
{% if is_admin and is_active %}...{% endif %}
{% if is_free or is_trial %}...{% endif %}
{% if not is_blocked %}...{% endif %}
Schleifen
Verwenden Sie {% for %}, um über Arrays zu iterieren:
{% for item in items %}
- {{ item.name }}: {{ item.value }}
{% endfor %}
Schleifenvariablen
Innerhalb einer Schleife stehen Ihnen spezielle Variablen zur Verfügung:
{% for user in users %}
{{ forloop.Counter }}: {{ user.name }}
{% if forloop.First %}(first item){% endif %}
{% if forloop.Last %}(last item){% endif %}
{% endfor %}
| Variable | Beschreibung |
|---|---|
forloop.Counter |
Aktuelle Iteration (1-indiziert) |
forloop.Counter0 |
Aktuelle Iteration (0-indiziert) |
forloop.First |
True bei der ersten Iteration |
forloop.Last |
True bei der letzten Iteration |
forloop.Revcounter |
Verbleibende Iterationen |
Leere Schleifen
Leere Arrays elegant behandeln:
{% for item in items %}
{{ item.name }}
{% empty %}
No items found.
{% endfor %}
Praktische Beispiele
Einen Prompt mit Kontext erstellen
You are analyzing customer feedback.
{% for review in reviews %}
Review #{{ forloop.Counter }}:
Rating: {{ review.rating }}/5
Comment: {{ review.text | truncatechars:200 }}
{% endfor %}
Summarize the overall sentiment and key themes.
Bedingter API-Request-Body
{
"user": "{{ user.email }}",
"plan": "{{ plan | default:"free" }}",
{% if include_metadata %}
"metadata": {
"source": "{{ source }}",
"timestamp": "{{ timestamp }}"
}
{% endif %}
}
Dynamischer E-Mail-Inhalt
Hi {{ user.name | title }},
{% if order.status == "shipped" %}
Great news! Your order #{{ order.id }} has shipped.
Tracking: {{ order.tracking_number }}
{% elif order.status == "processing" %}
Your order #{{ order.id }} is being prepared.
{% else %}
Your order #{{ order.id }} is confirmed.
{% endif %}
Items ordered:
{% for item in order.items %}
- {{ item.quantity }}x {{ item.name }} - ${{ item.price | floatformat:2 }}
{% endfor %}
Total: ${{ order.total | floatformat:2 }}
SQL-Abfragen generieren
SELECT * FROM users
WHERE status = 'active'
{% if department %}
AND department = '{{ department }}'
{% endif %}
{% if min_score %}
AND score >= {{ min_score }}
{% endif %}
ORDER BY created_at DESC
LIMIT {{ limit | default:100 }}
Tipps
- Verwenden Sie
{{ variable | default:"fallback" }}, um fehlende Werte abzufangen - Nutzen Sie
{% if variable %}, um zu prüfen, ob eine Variable existiert und nicht leer ist - Filter lassen sich verketten:
{{ name | lower | truncatechars:20 }} - Leerzeichen innerhalb von
{{ }}und{% %}werden ignoriert