如何在 WTForms 中创建单个复选框?

How to create a single checkbox in WTForms?

我在网上找到的大部分信息都是针对多个复选框的。我只想要1个。

我有:

class CategoryForm(FlaskForm):
    category = StringField('category',validators=[DataRequired()])
    checkbox = BooleanField('Private?')

@app.route('/category/<categoryid>',methods=('GET','POST'))
def category(categoryid):
    category = Category.query.get(categoryid)
    if request.method == 'POST':
        if request.form.get('category'):
            category.name = request.form['category']
            category.private = request.form['private']
            db.session.add(category)
            db.session.commit()
            return redirect(url_for('index'))

    c_form = CategoryForm()
    c_form.category.data = category.name
    return render_template('category.html',form =c_form,category=category)

还有我的 'category' 模板:

<form method="post">
    {{ form.hidden_tag() }}
    {{ form.checkbox }}
    <button type="submit">Go!</button>
</form>

现在我的浏览器呈现这个:

<peewee.BooleanField object at 0x105122ad0> Go!

显然我希望它呈现复选框。我怎样才能做到这一点?我需要小部件吗?

我的印象是您将 peewee 中的字段用作表单中的字段,这是行不通的。最可能的情况是您同时导入了两者,而一个导入覆盖了另一个。

如果您需要在同一个文件中同时拥有模型和表单,请使用别名。

from peewee import BooleanField as PeeBool

from wtforms import BooleanField as WTBool