使用Jinja2时的ToolTips错误

0 投票
1 回答
1128 浏览
提问于 2025-04-18 14:07

我在使用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") }}

这个代码运行得很好(我只是去掉了data-container、data-placement等属性):

{{ 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

当你用关键字参数调用一个函数时,关键字必须是有效的标识符;这些标识符不能使用 -,因为那是减法运算符。比如 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") }}

注意,只有第一个 _ 被替换,所以这会生成:

<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 参数不是作为关键字参数传入,而是作为字典的一部分传入。

撰写回答