WTForms的默认表单大小

时间:2014-07-24 22:07:03

标签: wtforms flask-wtforms

我想拥有至少size = 50的长格式,并且在html中我有:

{{ form.name(size=50) }}

但是,我对每个页面都有10个表单,是否可以忽略这种多余的方式并且可以解决? (没有大小= 50)

谢谢

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标,具体取决于您想要解决的链条中的位置。但我认为模板层是你应该解决的问题,因为你想要的只是纯粹的演示。

假设您使用的是Jinja2,您可以编写一个小宏来预设您希望呈现的每个字段的size关键字参数:

宏:

{% macro render_field(field) -%}
    {% if field.type != 'HiddenField' %}
        <label for="{{ field.id }}">{{ field.label }}</label>
       {{ field(size=50, **kwargs) }}
    {% endif %}
{%- endmacro %}

请注意,在字段调用中,我将其size预设为50

接下来,要渲染该字段,只需使用字段名称(在这种情况下为some_field)调用此宏:

{{ render_field(form.some_field) }}

这是假设您将宏和字段呈现代码放在同一模板文件中。 对于较大的模板,建议拆分宏并将代码渲染到不同的文件中。宏进入&#34; _helper&#34;文件按照惯例。

如果您将此宏放在名为&#34; form_helper.html&#34;的文件中,则需要先将此文件导入包含实际字段呈现代码的模板中:

{% import 'form_helper.html' as form_helper %}

现在form_helper.html命名空间中的所有宏都位于form_helper中。因此,您的字段呈现代码将变为:

{{ form_helper.render_field(form.some_field) }}