【发布时间】:2021-07-11 03:22:21
【问题描述】:
您好,我有一个 html 文件,其代码类似于:
<div class="form-group">
<div class="input-group input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-key-25"></i></span>
</div>
{{ form.abc1(placeholder="abc 1",class="form-control",type="password")}}
</div>
</div>
<div class="form-group">
<div class="input-group input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-time-alarm"></i></span>
</div>
{{ form.abc2(placeholder="abc 2",class="form-control") }}
</div>
</div>
<div class="form-group">
<div class="input-group input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-time-alarm"></i></span>
</div>
{{ form.abc3(placeholder="abc 3",class="form-control") }}
</div>
</div>
我怎样才能使用 jinja for 循环来做到这一点,我可以执行以下 python 的解决方案:
i = 1
while i < 3:
exec(f"abc{i} = {i}")
i += 1
基本上我需要使用 jinja 循环在 html 代码中制作 abcs
{% for element in abclist %}
在这里可以定义以下内容:
{{ form.abc%element here%(placeholder="abc %element here%",class="form-control") }}
【问题讨论】:
-
而不是
exec(f"abc{i} = {i}"),您可以在rensering 时将列表传递给jinja 模板,exec(f"abc{i} = {i}")似乎是一个奇怪和矫枉过正,对我来说不是一个好的用途。 -
我的问题是如何在这个块中放置一个变量; {{ form.abc3(placeholder="abc 3",class="form-control") }}
-
最大的错误是使用
exec(f"abc{i} = {i}")创建唯一变量。您应该为此abc = []、abc.append(i)使用标准列表 - 然后您可以在 Python 和 Jinja 中使用for-loop 来处理它。在将其发送到 Jinja 之前,您应该在 Python 中设置所有值(如placeholder)