使用Jinja2的工具提示时出错

时间:2014-07-21 14:49:09

标签: python flask jinja2

当我尝试使用带有文本输入字段的工具提示时,我遇到了Jinja2的问题:“函数调用表达式的语法无效”。

这是我的代码:

{{ Wformulario.WCPO_Nro_Part(class="form-control input-sm inteiro tooltips", data-container="body", data-placement="bottom", data-original-title="Informe o Numero de Participantes: 0 a 99", tabindex="3") }}

这完美无缺(我只是删除数据容器,数据放置......):

{{ Wformulario.WCPO_Nro_Part(class="form-control input-sm inteiro tooltips", tabindex="3") }}

这完美地运作:

<input class="form-control input-sm inteiro tooltips" data-container="body" data-placement="bottom" data-original-title="Informe o Numero de Participantes: 0 a 99"> </input>

我不知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

使用关键字参数调用函数时,只能对关键字使用有效的标识符;这些标识符可以使用-,因为这是减法运算符。 data-container不是有效的标识符。

我假设你在这里使用WTForms来产生你的输入。在这种情况下,您可以用data-替换data_,WTForms将使用短划线而不是下划线正确渲染这些属性:

{{ Wformulario.WCPO_Nro_Part(class="form-control input-sm inteiro tooltips", 
                             data_container="body", data_placement="bottom", 
                             data_original_title="Informe o Numero de Participantes: 0 a 99",
                             tabindex="3") }}

请注意,只会替换 first _,因此会创建:

<input class="form-control input-sm inteiro tooltips"
       data-container="body" data-placement="bottom" 
       data-original_title="Informe o Numero de Participantes: 0 a 99"> </input>

请注意_中的original_title

要解决这个问题,你必须在字典中传递信息,而是使用**(双重调用)调用:

{{ Wformulario.WCPO_Nro_Part(class="form-control input-sm inteiro tooltips", 
                             data_container="body", data_placement="bottom", 
                             tabindex="3",
                             **{'data-original-title': "Informe o Numero de Participantes: 0 a 99"}) }}

现在data-original-title参数不作为关键字参数传递,而是作为字典的一部分传递。