Jinja字典值未显示

时间:2017-02-03 18:59:38

标签: python flask jinja2 flask-wtforms

我正在使用Flask应用程序创建一个包含RadioFields作为选择的表单,我还将param2 dict传递给jinja客户端。

我成功地将各个Radiofields渲染为子字段,但我似乎无法呈现密钥附带的dict值的文本。

radiofield的标签也是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>

输出我试图

&LT;&GT;文字标签1已完成

&LT;&GT;文字标签2忙

1 个答案:

答案 0 :(得分:1)

我发现了问题。

正如@ sergey-shubin所说,subfield.label的{​​{1}}属性是一个HTML构造, 意思是:

如果您致电form

然后你会得到{% subfield.label %}。 &lt; - HTML Construct

<强>解决方案:

您可以通过调用<label for="display-0">Text Label1</label>方法text从构造中提取标签本身,该方法从HTML构造中生成subfield.label.text

Answer found here