我正在尝试创建一个接受参数的宏,并将元素添加到表单字段中。这是我目前的代码。
{% macro render_field(field,class,**custom) %}
<div class="form-group">
{% if field.name != "submit" %}
{{ field.label }}
{% endif %}
{{ field(class="form-control %s" % class , custom ) }}
</div>
{% endmacro %}
{{ render_field(form.reciver_name,"test","placeholder = a") }}
我只是不知道如何接受多个论点而且不太了解** kwargs
我收到此错误TemplateSyntaxError:期望令牌'name',得到'**'
答案 0 :(得分:1)
Jinja宏与定义python函数并不完全相同。见这里:http://jinja.pocoo.org/docs/dev/templates/#macros
所以我认为您的宏定义中不需要li
。此外,当您调用宏时,第三个参数不是关键字参数。它是文字字符串**custom
。
您可以尝试像这样调用宏:
"placeholder = a"
Jinja应该将占位符关键字arg放在{{ render_field(form.reciver_name, "test", placeholder="a") }}
特殊变量中。我对flask-wtforms不太熟悉,但你应该能够在kwargs
函数调用中使用这个kwargs
变量。
供将来参考:field(...)
需要在宏中至少访问一次才能接受任何关键字参数。有关更多详细信息,请参阅链接的重复问题。