从Flask表单中删除搜索词

时间:2015-05-18 22:47:55

标签: python flask

我有一个表单通过电子邮件搜索用户以删除它们。删除用户并返回页面后,旧搜索词仍在表单中。如何在提交后从表单中删除值?

使用request.form.clear()request.form['email'] = ""加注TypeError: 'ImmutableMultiDict' objects are immutable

if 'delete_user' in request.form:
# don't allow current user to delete themselves
    if user.id != current_user.id:
        User.delete(user)
        flash(user.username + " has been deleted", 'warning')
        user = None
        request.form.clear()

searchForm = SearchForm(request.form, obj=user)
return render_template("users/admin.html", user=user, form=searchForm)

2 个答案:

答案 0 :(得分:1)

在您的代码中,看起来搜索字段可能使用form=searchForm填充,该SearchForm(request.form, obj=user)正在通过 formParams = {key: value for key, value in x.items() if key != "email"} searchForm = SearchForm(formParams, obj=user) return render_template("users/admin.html", user=user, form=searchForm) 构建。您需要调整您传递给该构造函数的内容。像下面这样的东西应该有效:

{{1}}

答案 1 :(得分:0)

如果您正在使用WTForms,则可以在表单中进行验证。还没有明显的理由将用户对象传递给用于搜索以供用户删除的表单。获取用户是基于输入的表单的工作。此外,假设这是一个POST请求,您应该在POST成功后重定向,而不是手动清除表单。

List<SplunkEvent>