pongo2 is the django template syntax for Iris.
<html><head><title>Our admins and users</title></head>
{# This is a short example to give you a quick overview of pongo2's syntax. #}
{% macro user_details(user, is_admin=false) %}
<div class="user_item">
<!-- Let's indicate a user's good karma -->
<h2 {% if (user.karma >= 40) || (user.karma > calc_avg_karma(userlist)+5) %}
class="karma-good"{% endif %}>
<!-- This will call user.String() automatically if available: -->
{{ user }}
</h2>
<!-- Will print a human-readable time duration like "3 weeks ago" -->
<p>This user registered {{ user.register_date|naturaltime }}.</p>
<!-- Let's allow the users to write down their biography using markdown;
we will only show the first 15 words as a preview -->
<p>The user's biography:</p>
<p>{{ user.biography|markdown|truncatewords_html:15 }}
<a href="/user/{{ user.id }}/">read more</a></p>
{% if is_admin %}<p>This user is an admin!</p>{% endif %}
</div>
{% endmacro %}
<body>
<!-- Make use of the macro defined above to avoid repetitive HTML code
since we want to use the same code for admins AND members -->
<h1>Our admins</h1>
{% for admin in adminlist %}
{{ user_details(admin, true) }}
{% endfor %}
<h1>Our members</h1>
{% for user in userlist %}
{{ user_details(user) }}
{% endfor %}
</body>
</html>
For a documentation on how the templating language works you can head over to the Django documentation. pongo2 aims to be compatible with it.
You can access pongo2's API documentation on godoc.
date
and time
filter are taking the Golang specific time- and date-format (not Django's one) currently. Take a look on the format here.stringformat
does not take Python's string format syntax as a parameter, instead it takes Go's. Essentially {{ 3.14|stringformat:"pi is %.2f" }}
is fmt.Sprintf("pi is %.2f", 3.14)
.escape
-filter is applied immediately. Therefore there is no need for a force_escape
-filter yet.forloop
fields (like forloop.counter
) are written with a capital letter at the beginning. For example, the counter
can be accessed by forloop.Counter
and the parentloop by forloop.Parentloop
.{% if key in map %}Key is in map{% else %}Key not in map{% endif %}
or {% if !(key in map) %}Key is NOT in map{% else %}Key is in map{% endif %}
.Please see the documentation for a full list of provided API methods.
Please refer to kataras/iris/_examples/view
This project exists thanks to all the people who contribute.