我有一个装有WTForms的Flask应用程序,处理数据输入。有一个SelectField
正确地显示了erga
表中的数据。但是,在使用表单时,应用程序不会将正确的值添加到数据库表的ergo
列中,而是添加函数!怎么能修好呢
我的表格:
class TestForm(Form):
testpedio = StringField('Testpedio', [validators.Length(min=1, max=200)])
erga = SelectField('ergo', choices=[])
我的代码:
@app.route('/add_test', methods=['GET', 'POST'])
@is_logged_in
def add_test():
cur = mysql.connection.cursor()
cur.execute("SELECT ergo FROM erga")
list1 = list(cur.fetchall())
def arx():
for i in list1:
for k in i:
j=i[k]
list2.append(j)
list2=[]
arx()
print(list2)
form = TestForm(request.form)
form.erga.choices= [(i,i) for i in list2]
print(form.erga.choices)
if request.method == 'POST' and form.validate():
testpedio = form.testpedio.data
# Create Cursor
cur = mysql.connection.cursor()
# Execute
cur.execute("INSERT INTO test(testpedio,ergo,author) VALUES(%s,%s, %s)",(testpedio,erga,session['username']))
# Commit to DB
mysql.connection.commit()
#Close connection
cur.close()
flash('Test Created', 'success')
return redirect(url_for('dashboard'))
return render_template('add_test.html', form=form)
您的代码中有一个名为
erga
的函数。这就是为什么要插入函数而不是值。要修复代码,您需要将执行语句更改为:收件人:
请注意,我们将execution语句中的
erga
更改为form.erga.data
,这样我们就可以得到形式中SelectField
的值。重要的是要知道form.erga.data
将为您提供所选选项的键。在您的情况下,我们不需要担心这一点,因为您的选择选项的键和值是相同的。然而,在未来的情况下,关键可能会有所不同。因此,在这些情况下,要获得选择选项的实际值,您可能需要使用dict(form.erga.choices).get(form.erga.data)
相关问题 更多 >
编程相关推荐