快速N」髒:
我發現了以下工作很好:而不是使用領域直接,我將它們包裝在一個神社宏:
{% macro render_field(field) %}
<label>
<span>{{ _field.label.text }} </span>
{{ field(id=False, **kwargs) }}
</label>
{% endmacro %}
其可以像這樣使用:
{% from "_formhelpers.html" import render_field %}
{{ render_field(form.name) }}
這裏的技巧是在渲染字段時通過id=False
。
使用元對象:
_Auto = object()
class NoIdAttributeMeta(DefaultMeta):
"""
Surpresses rendering the `id' attribute.
"""
def bind_field(self, form, unbound_field, options):
"""
Raises TypeError in case 'id' is given as a positional arg when constructing a field.
If this happens, make this code smarter or pass `id' as a keyword arg.
"""
# we check `id' at rendering time and if it is still _Auto, do not render it
unbound_field.kwargs.setdefault('id', _Auto)
return super().bind_field(form, unbound_field, options)
def render_field(self, field, render_kw):
if field.id is _Auto:
field.id = False
return super().render_field(field, render_kw)
class MyForm(flask_wtf.Form):
Meta = NoIdAttributeMeta
或務實:
你也可以添加不同的前綴爲您的表單的每個實例,因此你必須唯一ID:
my_form = MyForm(prefix="form1")
pass