我通过Flask-WTF非常简化的wiki阅读,并且对我能用它做些什么并不了解。我的印象是html的<form>
部分现在只能看起来像
<form method="post">
{{ form.hidden_tag() }}
{{ form.name }}
<input type="submit">
</form>
但我真的想要使用物化的样式,例如:
<div class="row">
<div class="input-field col s6">
<i class="material-icons prefix">account_circle</i>
<input value="FN" id="first_name" type="text" class="validate">
<label class="active" for="first_name">First Name</label>
</div>
<div class="input-field col s6">
<input value="LN" id="last_name" type="text" class="validate">
<label class="active" for="last_name">Last Name</label>
</div>
</div>
我可以将{{ form.first_name }}
和{{ form.last_name }}
放在哪里?
编辑:让我详细说明我的答案:
例如,我想要一些像Materialized datepicker
(一个很好的弹出式日历,允许用户选择日期),这应该在<input class='datepicker' length="50">
,但现在我要替换整个{{1}与<input>
对齐...我失去了编辑课程的特权,但没有。
答案 0 :(得分:9)
WTForms字段可以是called,其属性将在它们呈现的输入上设置。将样式,JavaScript功能等所需的属性传递给字段,而不仅仅是引用字段。标签的行为方式相同,可以使用field.label
进行访问。
for
,value
,type
,id
和name
不需要传递,因为它们是自动处理的。有一些rules用于处理属性的特殊情况。如果属性名称是Python关键字,例如class
,请附加下划线:class_
。破折号不是有效的Python名称,因此单词之间的下划线将转换为破折号; data_toggle
变为data-toggle
。
{{ form.first_name(class_='validate') }}
{{ form.first_name.label(class_='active') }}
{{ form.begins(class_='datepicker', length=50) }}
请注意,这两个链接方法都不需要直接调用,这些文档只是描述调用字段时的行为。
答案 1 :(得分:1)
在 WTForms 2.1 中,我使用extra_classes
,就像下面这样:
1。第一种方式
{{ f.render_form_field(form.first_name, extra_classes='ourClasses') }}
或者您可能就是这样:
{{ form.first_name, extra_classes='ourClasses' }}
我们还可以像下面的第二种方式一样在表单字段上使用render_kw
属性:
2。第二种方式
style={'class': 'ourClasses', 'style': 'width:50%; other_css_style;'}
first_name = StringField('First name',
validators=[InputRequired(),Length(1, 64)],
render_kw=style)
但是我更希望使用第一种方法。