我正在构建一个包含多个选择字段的表单,这些页面在加载页面时必须填充符合特定条件的数据库中的值。
这是我的代码的一部分:
class MultiCheckboxField(SelectMultipleField):
widget = widgets.ListWidget(prefix_label=False)
option_widget = widgets.CheckboxInput()
class SimpleForm(FlaskForm):
user_list = [(x["username"], x["first_name"]) for x in list_inactive_users()]
inactive_users = MultiCheckboxField(label='inactive-users', choices=user_list)
@app.route("/manage", methods=['post','get'])
def manage():
form = SimpleForm()
session['username'] = 'blah'
is_admin = False
try:
is_admin = session['username'] in admin_list
except:
pass
if is_admin:
if form.validate_on_submit():
print (activate_users(form.inactive_users.data))
return render_template('example.html',form=form)
else:
print (form.errors)
return render_template('example.html',form=form)
当我第一次运行它时,它运行良好,并且list_inactive_users()
返回的所有用户都显示在页面上。
现在,当我选择一个并发布表单时,将调用activate_users()
,并且所选用户在数据库中不再标记为非活动状态。
但是,现在刷新页面时,当用户在数据库中被标记为已激活时,该用户仍然以不活动的形式显示。
如果我停止服务器并重新启动它,则标记为不活动的用户将不再显示。
我怀疑该表格的缓存版本正在重新使用。如何确保在每个页面加载时生成并呈现表单的新实例?