[英]Pre-populating a BooleanField as checked (WTForms)
對於我的生活,我無法弄清楚如何使用 WTForms 預填充 BooleanField。 我有一個名為“活動”的字段。 它默認為未選中,也不是必需的。 所以我把它設置成...
class QuestionForm(Form):
question = TextField('Question', [validators.Required()])
slug = TextField('Slug', [validators.Required()])
active = BooleanField('Active')
然后我有一個 EDIT PAGE,我在其中顯示了我想要編輯的“問題”的表單。
{{ form.question.label }}
{{ form.question(value=q.question) }}
{{ form.active(value=q.active) }} Show this question?
如果 'active' 為 True,我希望 BooleanField(復選框)具有 'checked' 屬性。 如果為 False,則不會。 但是我什至不知道如何使復選框具有選中狀態,在呈現表單時,更不用說條件部分了。
我能夠讓它顯示檢查的唯一方法是在定義表單時添加 default=True 。 但這不是我需要的。
我試過使用 'default', 'initial', 'value', 'selected' 渲染表單但沒有運氣。 我搜索了文檔和谷歌。 我想我錯過了一些東西! :)
更新
這是我的看法。 也許這是問題所在?
@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)
如果你有一個對象,你可以用它來填充你的表單,比如form = QuestionForm(obj=my_obj)
。 如果您只想設置活動屬性,請使用form = QuestionForm(active=True)
。
經過多次搜索(+1),snahor 的回答有所幫助。 谷歌在這個問題上似乎很弱。 我發現我需要
<div class="form-group">
{{adminForm.is_admin.label}}
{{adminForm.is_admin(checked=True, class_="form-control")}}
</div>
<div class="form-group">
{{adminForm.is_admin.label}}
{{adminForm.is_admin(checked=False, class_="form-control")}}
</div>
我已將其用作
<div class="form-group">
{{adminForm.is_admin.label}}
{{adminForm.is_admin(checked=user.is_admin, class_="form-control")}}
</div>
一個 BooleanField 定義如下:
checkbox = BooleanField('title',
default=True,
render_kw ={'checked':''})
要將默認布爾值設為 True,您需要將默認值設置為“已檢查”
基本字段 基本字段通常表示具有單個值的標量數據類型,並引用表單中的單個輸入。
class wtforms.fields.BooleanField(default field arguments, false_values=None)
表示輸入類型="復選框"。 使用默認選項設置已檢查狀態。 任何默認值,例如 default="checked" 將檢查放入 html 元素並將數據設置為 True
class QuestionForm(Form):
question = TextField('Question', [validators.Required()])
slug = TextField('Slug', [validators.Required()])
active = BooleanField('Active', default="checked")
我遇到了同樣的問題,經過數小時的搜索和閱讀,解決方案非常簡單。
form = forms.TestForm(request.form)
form.yourbooleanfield.checked = YourVariable
if request.method=="POST" and form.validate():
print(form.yourbooleanfield.data)
除了在模板中指定,您還可以在類定義中指定
class QuestionForm(Form):
question = TextField('Question', [validators.Required()])
slug = TextField('Slug' , [validators.Required()])
activeChecked = BooleanField('Active', default=True )
activeUnChecked = BooleanField('Active', default=False )
這對我有用
BooleanField(default="checked")
https://wtforms.readthedocs.io/en/2.3.x/fields/
class wtforms.fields.BooleanField(default field arguments, false_values=None)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.