【问题标题】:Jinja2 how to put variable inside jinja block?Jinja2 如何将变量放入 jinja 块中?
【发布时间】: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

标签: python html flask jinja2


【解决方案1】:

因为你不能像这样在 Jinja 中嵌套双括号 {{ {{}} }} 最好(和更清洁)的解决方案是使用宏。显示here

然后你可以使用你的循环:

{% for element in form %}
{{ render_field(element) }}

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 2015-10-02
    • 2021-11-08
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2021-01-02
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多