我使用了来自http://flask.pocoo.org/snippets/60/的代码段来从我在Flask中的模型创建一个WTForms表单。一切正常,除了它只创建输入字段。我希望描述(见下面的models.py)是textarea。有什么想法吗?
来自models.py:
title = db.Column(db.String(55))
description = db.Column(db.Text)
来自views.py
MyForm = model_form(MyModel, base_class=Form)
form = MyForm()
return render_template('create.html', form=form)
来自create.html
{% for field in form %}
{{field.label}}
{{field}}
{% endfor %}
输出:
<input id="title" name="title" type="text" value="">
<input id="description" name="description" type="text" value="">
我想要的是什么:
<input id="title" name="title" type="text" value="">
<textarea id="description" name="description"></textarea>
答案 0 :(得分:4)
您可以使用field_args
的{{1}}参数来覆盖特定字段的设置。您可以设置从标签到验证器的所有内容。它接受model_form
的任何有效参数,包括小部件。
Field.__init__()
如果您想查看可以覆盖的其他内容,请查看source for Field
。
答案 1 :(得分:0)
您可以像这样创建自定义表单:
forms.py
from flask.ext.wtf import Form
from wtforms.fields import TextField, TextAreaField, SubmitField
import wtforms
class ItemForm(Form):
title = Textfield('Title')
description = TextAreaField('Description')
submit = SubmitField('Submit')
routes.py
from forms import ItemForm
@app.route('/form')
def form()
form = ItemForm()
return render_template('form.html', form=form)
form.html
{% for field in form %}
{{field.label}}
{{field}}
{% endfor %}
本教程有更多信息:http://net.tutsplus.com/tutorials/python-tutorials/intro-to-flask-adding-a-contact-page/