【发布时间】:2021-02-17 04:12:05
【问题描述】:
我有一个烧瓶 WTForms 表单,我正在使用我的数据库中的字段进行预填充。从那里我想让用户能够更新任何字段的值,如果他们选择并将其重新插入数据库。下面的示例代码遇到的具体问题是,当我提交表单时,form.data 字典中没有数据(打印在第 18 行)。即使我在其中输入了信息,这些字段也是空的。我的猜测是 form.field1.data 仍然保留它从数据库中所做的值(第 11 行),而不是接收用户输入的数据。
但是我无法弄清楚如何以其他方式构建表单以处理此问题。代码如下,谢谢
@hp_blueprint.route('/formpage',methods=['GET','POST'])
def build_form():
#setup the QualitativeForm with values from the DB as placeholders
with sfsql_engine.connect() as conn:
df = pd.read_sql("SELECT * FROM MY_TABLE WHERE 1=1",conn)
if len(df) == 0:
form = QualitativeForm()
else:
form = QualitativeForm()
form.field1.data = df['field1'].values[0]
form.field2.data = df['field2'].values[0]
form.field3.data = df['field3'].values[0]
#write to DB upon submission
if form.is_submitted() and form.validate():
#WHEN I PRINT THIS OUT, IT DOES NOT HOUSE ANY OF THE DATA THAT I JUST TYPED IN
print(form.data)
print("the form update worked properly")
field1 = form.field1.data
field2 = form.field2.data
field3 = form.field3.data
with sfsql_engine.connect() as conn:
conn.execute("INSERT INTO MY_TABLE(field1,field2,field3) VALUES (%s,%s,%s)",
field1,field2,field3)
print("inserts ran correctly")
return redirect('/formpage')
【问题讨论】:
标签: python html flask jinja2 flask-wtforms