crinja
crinja copied to clipboard
Add support for namespace objects
Following code will not work because the loop variable scope.
{% set dte = "-" %}
{% for blog in blogs %}
{% if (blog.created_at | date("%b %Y")) != dte %}
<h2>{{ blog.created_at | date("%b %Y") }}</h2>
{% set dte = blog.created_at | date("%b %Y") %}
{% endif %}
<p>{{ blog.title }}</p>
{% endfor %}
Jinja 2 provides namespace
using that this use case will work (Ref: https://jinja.palletsprojects.com/en/3.0.x/templates/#assignments)
This feature was introduced in Jinja version 2.10
{% set ns = namespace(dte="-") %}
{% for blog in blogs %}
{% if (blog.created_at | date("%b %Y")) != ns.dte %}
<h2>{{ blog.created_at | date("%b %Y") }}</h2>
{% set ns.dte = blog.created_at | date("%b %Y") %}
{% endif %}
<p>{{ blog.title }}</p>
{% endfor %}