Tuesday, July 19, 2022

Little Jinja Tricks

 These are a bunch of Jinja-related things I searched for once and might need again...

Stripping newline characters in a for loop

If you're iterating over a list and want to the output presented as:

ItemA ItemB ItemC ...

Instead of:

ItemA
ItemB
ItemC
...

You can do: {% for item in list -%} {{ item }} {%- endfor %}
Note the '-' in the for/endfor block.

Ensuring a list with one item is treated as a single-item list

Iterating over a list with exactly one string element in Jinja will generally lead to a situation where the element is parsed as i n d i v i d u a l  c h a r a c t e r s.  To avoid this, you can force the list to be interpreted as a list and specify the delimeter:

{% set list1 = my_list.split(',') %}
{% for item in list1 %}
{{ item }}
{% endfor %}

How to get elements from a dictionary of dictionaries

Sometimes your data is not stored conveniently in a simple list or dictionary.  Sometimes the values in your dictionary are actually dictionaries themselves.  In this case, you can use the dict.items() method:

{% for key, value in my_dictionary.items() %}
{{ value.sub_key }}
{% endfor %}

Other things...

More goes here.