在Jinja中使用嵌入式HTML呈现WTForms SelectField选项

时间:2017-04-24 13:12:51

标签: python html flask jinja2 wtforms

我正在尝试在SelectField中创建一个在标签中使用嵌入式span的选项。但是,标签会在字段中进行转义和显示。

我已经尝试Embed HTML tag in Flask WTForms field但在这种情况下它不起作用(可能是因为需要转义的文本在列表中)。

是否可以在不编写自己的渲染器的情况下在选项标签中渲染HTML?

class myForm(Form):
    myChoices = [
        ('0','Select an option <span class="caret"></span>'),
        ('1','Option 1'),
        ('2','Option 2')
    ]
    optionSelect = SelectField('Select', choices=myChoices, validators=[Required()])

1 个答案:

答案 0 :(得分:0)

与您关联的问题类似,您需要让Jinja知道您呈现的价值是值得信赖的,不应该被转义。由于您不能直接控制选项的呈现,因此您无法使用|safe过滤器,而是在定义值时需要执行此操作。使用Markup类在Python中将字符串标记为安全。

from jinja2 import Markup

('0', Markup('Select an option <span class="caret"></span>')),