对于我的生活,我无法弄清楚如何使用 WTForms 预填充 BooleanField。我有一个名为“活动”的字段。默认是不勾选的,也不是必须的。所以我把它设置成...
class QuestionForm(Form):
question = TextField('Question', [validators.Required()])
slug = TextField('Slug', [validators.Required()])
active = BooleanField('Active')
然后我有一个编辑页面,我在其中显示我要编辑的“问题”的表格。
{{ form.question.label }}
{{ form.question(value=q.question) }}
{{ form.active(value=q.active) }} Show this question?
如果 'active' 为 True,我希望 BooleanField(复选框)具有 'checked' 属性。如果是假的,不要。但我什至无法弄清楚如何使复选框具有选中状态,在呈现表单时,更不用说条件部分了。
我能够让它显示出来的唯一方法是在定义表单时添加 default=True 。但这不是我需要的。
我在渲染表单时尝试使用“默认”、“初始”、“值”、“选定”,但没有成功。我搜索了文档和谷歌。我想我错过了什么!:)
更新
这是我的观点。也许是问题所在?
@mod.route('/q/<slug>/edit', methods = ['GET', 'POST'])
def edit(slug):
form = QuestionForm(request.form, csrf_enabled=False)
q = Question.query(Question.slug==slug).get()
if request.method=='POST':
if form.validate_on_submit():
q.question = form.data.get('question')
q.slug = form.data.get('slug')
q.active = form.data.get('active')
q.put()
return redirect('/questions')
return render_template('questions/edit.html', form=form, q=q)