如何确保在加载页面时创建新的FlaskForm对象?

时间:2019-04-19 13:37:07

标签: python flask flask-wtforms wtforms

我正在构建一个包含多个选择字段的表单,这些页面在加载页面时必须填充符合特定条件的数据库中的值。

这是我的代码的一部分:

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(),并且所选用户在数据库中不再标记为非活动状态。

但是,现在刷新页面时,当用户在数据库中被标记为已激活时,该用户仍然以不活动的形式显示。

如果我停止服务器并重新启动它,则标记为不活动的用户将不再显示。

我怀疑该表格的缓存版本正在重新使用。如何确保在每个页面加载时生成并呈现表单的新实例?

0 个答案:

没有答案