如何在 Flask 中检查表单的哪些字段已被修改?

Man*_*kar 9 python flask wtforms flask-wtforms

我正在尝试找出一种方法来检查是否有任何内置 Form 方法会在表单已在Flask/WTForms中修改时返回 true

我知道在Django Forms中,我们可以灵活地使用form.has_changed()完全符合我要求的方法。

我正在尝试检查表单是否已被修改,如果是,我会进行一些数据库更新。

如果有人有任何想法,请让我知道这一点或建议正确的开始方法。

Pav*_*han 0

我还没有找到任何内置的 Form 方法,但这是我检查表单是否已更改以及哪些字段已更改的奇怪方法。
我只是将整个原始表单存储在附加的 StringField 中,然后将其与新表单进行比较。由于我不希望此字段显示在页面上,因此我将 html 文件中的样式更改为 style="visibility:hidden;display:none"

@app.route("/page", methods=["GET", "POST"])
def page(tag=None):

    class Person(FlaskForm):
        name = StringField("name")
        age = StringField("name")

    class Spouses(FlaskForm):
        people = FieldList(FormField(JetsonForm), min_entries=0)
        people_orig = StringField("people_orig")
        submit = SubmitField("Submit")

    data_from_database = get_data_from_database()

    data = {'people': [], 'people_orig': json.dumps(data_from_database)}
    for person_name in data_from_database:
        data['people'].append(data_from_database[person_name])

    form = Spouses(data=data)
    people_orig_data = json.loads(form.people_orig.data)
    people_new_data = dict()

    for person in form.people:
        people_new_data[person.name.data] = {
                                                    "name": persom.name.data,
                                                     "age": peron.age.data
                                                    }

    if form.is_submitted():
        for person_name in people_new_data:
            for field in people_new_data[person_name]:
                if people_new_data[person_name][field] != people_orig_data[cam][key]:
                    #update your database
        return redirect(request.url)
    return render_template("page.html",form=form)
Run Code Online (Sandbox Code Playgroud)