Python 使用表单字段描述呈现html标题属性
我正在使用上显示的render_field宏跨不同模板以长格式渲染字段 字段的定义如下Python 使用表单字段描述呈现html标题属性,python,flask,wtforms,Python,Flask,Wtforms,我正在使用上显示的render_field宏跨不同模板以长格式渲染字段 字段的定义如下 year_built = IntegerField(label='Year Built', description='Year built, not the year of a major renovation.', validators=[validators.NumberRange(
year_built = IntegerField(label='Year Built',
description='Year built, not the year of a major renovation.',
validators=[validators.NumberRange(
min=1700,
max=2012,
message="Between %(min)s and %(max)s")])
宏看起来像这样
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
我不知道如何在创建HTML字段字段(**kwargs)
的宏部分中使用字段对象中的描述。我知道我可以将关键字传递给render_field函数,但我处理的表单有100多个字段,在forms.py中设置描述,然后在template.html中再次将其设置为title关键字,这似乎是不必要的重复。我真的很想使用宏来显示一个描述作为一个标题,如果它在那里,或者只是显示没有标题的字段,如果它没有
在field()函数运行之前,有没有办法向
kwargs
添加新条目?所以这比我想象的要简单得多
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(title=field.description, **kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
{%macro render_field(field)%}
{{field.label}
{field(title=field.description,**kwargs)| safe}
{%if field.errors%}
{%字段中有错误。错误%}
- {{error}}
{%endfor%}
{%endif%}
{%endmacro%}
哦,天哪。。。我不知道模板中的field()和forms.py中的field类不同。换句话说,我可以添加一些属性,比如'dataforajax'(field(dataforajax='test')),并将其放入html中。但是,我在添加“用于ajax的数据”时遇到了问题,我可能需要对属性进行一些javascript编辑来放置破折号。
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(title=field.description, **kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}