Передайте HTML и итератор jinja из flask в jinja - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь сделать страницу максимально универсальной c, насколько это возможно, чтобы я мог использовать ее. Мне трудно сделать что-то вроде этого:

    colunas = '<div class="row justify-content-around">\
                        <div class="col-sm-1" align="left">\
                            {{ x.utente_id }}\
                        </div>\
                        <div class="col-sm-11" align="left">\
                            {{ x.utente_nome }}\
                        </div>\
                    </div>'

return render_template("stuff.html", colunas=colunas)

И затем, используя JINJA, я мог бы сделать что-то вроде:

{% for x in LIST_A %}
{{colunas}}
{% enfor %}

Конечно, это возвращает строку "coluna" x раз:

{{x.utente_id}} {{x.utente_nome}} {{x.utente_id} } {{x.utente_nome}} {{x.utente_id}} {{.....

Если я использую безопасную опцию

 {% for x in LIST_A %}
    {{colunas|safe}}
    {% enfor %}

Код HTML правильный отображается, но параметры "{{x.utente_id}}" считаются строками:

{{ x.utente_id }}
{{ x.utente_nome }}
{{ x.utente_id }}
{{ x.utente_nome }}
{{ x.utente_id }}
{{ x.utente_nome }}

Любая идея, как заставить Jinja2 распознавать их как атрибуты из объекта x?

Спасибо Бруно

1 Ответ

0 голосов
/ 31 марта 2020

Это звучит как хорошее место для Jinja макросов , это должно делать то, что вам нужно, и это будет держать html за пределами вашего обзора логи c.

Вот что-то, с чего можно начать (в вашем файле html):

{% macro generate_coluna(x) %}
<div class="row justify-content-around">
    <div class="col-sm-1" align="left">
        {{ x.utente_id }}
    </div>
    <div class="col-sm-11" align="left">
        {{ x.utente_nome }}
    </div>
</div>
{% endmacro %}

<html>
...

{% for x in LIST_A %}
    {{ generate_coluna(x) }}
{% endfor %}

...
</html>
...