背景
使用flask实现一个针对AD账号的操作处理,需要前台输入一个ad账号,通过下面不同的按钮实现“查询”,“删除”等操作。
思路
根据需求,这里涉及要一个表单中需要有多个submit按钮的实现了。
常规的FlaskForm使用为:
在forms.py中定义表单组件
1
2
3class AdUnlocker(FlaskForm):
ad = StringField(u'AD账号', validators=[DataRequired()], default='kfzx-')
submit = SubmitField(u'解锁')在views.py中调用表单,并判断是否有submit触发
1
2
3
4
5
6
7
8
9
def adunlock():
form = AdUnlocker()
if form.validate_on_submit():
ad = form.ad.data
result = unLocker(ad)
flash(result)
return redirect(url_for('.adunlock'))
return render_template("AD.html", form=form)
那么如果当我们需要有多个submit组件的情况呢:
在forms.py中定义表单组件
1
2
3
4class AdDel(FlaskForm):
ad = StringField(u'AD账号', validators=[DataRequired()], default='kfzx-')
check = SubmitField(u'查询')
delete = SubmitField(u'删除')这里我们定义了两个SubmitField,不管点击了哪个按钮,均是触发了提交,那么怎么区分判断呢?
根据官网说明,是可以检查submit按钮是否被点击,那么我们检查下对应的元素的data属性就会发现,当被提交按钮被点击是,它的data值为true,否则为false。
那就可以进行判断了:
在views.py中调用表单,并判断submit触发
1
2
3
4
5
6
7
8
9
10
11
12
def addel():
form = AdDel()
if form.validate_on_submit():
ad = form.ad.data
if form.check.data:
result = queryAD(ad)
elif form.delete.data:
result = deleteAD(ad)
flash(result)
return redirect(url_for('.addel'))
return render_template("AD.html", funcheader=funcheader, form=form)
扩展
wtforms官网说明:https://wtforms.readthedocs.io/en/stable/fields.html#wtforms.fields.PasswordField