[Python] Return a dict object from Jinja2 macros

Discussão em 'Python' iniciado por Stack, Abril 11, 2025.

  1. Stack

    Stack Membro Participativo

    I have a separate file for helper macros, so I import one when needed. Here is problematic macro:

    {% macro row_cycler(tiles) -%}
    {%- set row1 = [] -%}
    {%- set row2 = [] -%}
    {%- set row3 = [] -%}
    {%- set row4 = [] -%}
    {%- set rows = cycler(row1, row2, row3, row4) -%}
    {% for column in tiles|batch(4) -%}
    {% for tile in column -%}
    {%- do rows.next().append(tile) -%}
    {%- endfor %}
    {%- endfor %}
    {{ dict(row1=row1, row2=row2, row3=row3, row4=row4) }}
    {%- endmacro %}


    Seems it returns dict, but it's not. It returns "markupsafe.Markup object", it leads to something that:

    UndefinedError: 'markupsafe.Markup object' has no attribute 'itervalues'


    and so on. How can I force Jinja to return dict without converting?

    Continue reading...

Compartilhe esta Página