Jinja 字典值未显示

Jinja dictionary value not showing

我正在开发一个 Flask 应用程序,我在其中创建一个带有 RadioFields 作为选项的表单,并且我还将一个 param2 字典传递给 jinja 客户端。

我成功地将各个单选字段呈现为子字段,但我似乎无法呈现键附带的字典值的文本。

无线电场的标签也是 param2 中字典的键,我正在尝试将它的值打印在 subfield.label 文本旁边。

param2 看起来像这样:

param2{'Text Label1': 'completed', 'Text Label2': 'busy'}

当我在页面上打印 {{ param2 }} 时,我得到了应有的字典。

{'Text Label1': 'completed', 'Text Label2': 'busy'}

下面是我如何打印子字段并调用字典。

<form method="post">
    <table>
    {% for subfield in form.display %}
    <tr>  
        <td> {{ form.csrf_token }} </td>
        <td> {{ subfield }} {{ subfield.label }} </td>
        <td> {{ param2[subfield.label] }} </td> 
    </tr>
    {% endfor %}
    </table>
    <input type="submit" value="Generate">
    <button type="reset" value="Reset">Reset</button>
</form>

代码渲染时,param2的<td> </td>为空:

<tr>  
    <td> <input id="display-0" name="display" type="radio" value="5"> <label for="display-0">Text Label1</label> </td>
    <td>  </td> 
</tr>

我试图得到的输出

<> 文本标签 1 已完成

<> 文本标签 2 忙

我发现了问题。

正如@sergey-shubin 所说,formsubfield.label 属性 是一个 HTML 结构, 含义:

如果你打电话给 {% subfield.label %}

那么你会得到<label for="display-0">Text Label1</label>。 <-- HTML 构造

解法:

您可以通过调用 text 方法 subfield.label.text 从构造中提取标签本身,该方法从 HTML 构造中产生 Text Label1

Answer found here