3

我使用来自http://flask.pocoo.org/snippets/60/的片段从我在 Flask 中的模型创建一个 WTForms 表单。一切正常,除了它只创建输入字段。我希望描述(见下面的models.py)是一个文本区域。有任何想法吗?

来自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>
4

2 回答 2

6

您可以使用field_args参数model_form来覆盖特定字段的设置。您可以设置从标签到验证器的所有内容。它接受 的任何有效参数Field.__init__(),包括小部件。

MyForm = model_form(MyModel, base_class=Form, field_args={
    'description': {'widget': TextArea()},
})

如果您想查看可以覆盖的其他内容,请查看Field.

于 2014-01-22T21:20:21.507 回答
0

您可以像这样创建自定义表单:

表格.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')

路线.py

from forms import ItemForm
@app.route('/form')
def form()
    form = ItemForm()
    return render_template('form.html', 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/

于 2014-01-22T20:44:04.460 回答