gpt4 book ai didi

python - 同一页面中的多个表单,提交时保持数据填充

转载 作者:行者123 更新时间:2023-11-28 18:37:22 24 4
gpt4 key购买 nike

当我提交一个表单时,我将丢失在另一个表单中预填充的数据。我的意思是,要重现该问题,请提交 form_1,然后我将丢失 form_2 中选定的数据。因此,这在提交时会被忽略。

test = {'1':True}
form = F(**test)

您可以测试此代码以检查问题:

from flask import Flask, render_template
from flask_bootstrap import Bootstrap

from flask_wtf import Form
from wtforms import SelectField, SubmitField, TextField, BooleanField

app = Flask(__name__)
app.config['DEBUG'] = True
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
Bootstrap(app)

if __name__ == '__main__':
app.run()

class UserCriteria(Form):
factor_1_criteria = SelectField('A', choices=[('1', 'Bad'), ('2', 'Mediocre'), ('3', 'Quite good'), ('4', 'Awesome')])
submit = SubmitField('Update')

def interests():
class F(Form):
pass

setattr(F, 'submit_interests', SubmitField('Submit'))

interests = [{"id": 1, "industry": 'banks'},{"id": 2, "industry": 'soccer'}]

for name in interests:
setattr(F, str(name['id']), BooleanField(name['industry']))

test = {'1':True}
form = F(**test)

return form

@app.route('/', methods=['GET', 'POST'])
def index():
form_1 = UserCriteria()
form_2 = interests()

return render_template("users/profile.html", form_1=form_1, form_2=form_2)

我期望的是在提交其他表单后保持预填充的数据仍然可用。

最佳答案

经过进一步调查,我发现问题出在 request.form 上。

如果我在提交其他表单时在解包之前删除了 request.form,那么一切都会按预期进行。我不知道是否还有另一种更友好的方式,但这对我有用。

if request.form.getlist('submit_criteria'):
del request.form

关于python - 同一页面中的多个表单,提交时保持数据填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com