gpt4 book ai didi

python - Flask WTF 表单未随 sqlite3 数据库更新

转载 作者:行者123 更新时间:2023-11-30 23:38:22 25 4
gpt4 key购买 nike

我有一个 RadioField 表单项,它使用数据库中的字段值。

如果未创建数据库,我无法启动 Flask Web 服务器,即使它只能在我转到该页面并加载该表单时访问数据库。

如果我在网络服务器运行时更​​新数据库,我将看不到包含新数据库信息的表单。

直到我重新启动 Flask 网络服务器。

如何获取它,以便在您访问该页面时强制表单从数据库重新加载其值。

此外,我非常确定它将 RadioField 的值存储在内存中,因为我可以删除数据库,并且 Flask Web 服务器将继续运行,并且 RadioField 仍将显示。

我正在使用 sqlite3 数据库并使用 APSW(另一个 python sqlite3 包装器)对其进行读写

这是我的表格

class DatabaseForm(Form):
listOfRows = db.getDatabase()
rows = [(str(x[0]), x) for x in listOfRows]
images = RadioField('images', validators = [Required()], choices = rows)

这是我的观点

@app.route('/database', methods = ['GET', 'POST'])
def database():
''' displays the database and allows the user to select an entry '''
form = DatabaseForm()
if form.validate_on_submit():

primaryKey = form.images.data
primaryKey = int(primaryKey)


myProgram.start(primaryKey)
return render_template('simple.html', word = "SUCCESS")
else:
print form.errors

return render_template('database.html', form=form)

最佳答案

您应该在 View 中设置字段选择:

    form = DatabaseForm()
form.images.choices = [(str(x[0]), x) for x in listOfRows]
if form.validate_on_submit():

通过在类上设置一次,选项仅在类实例化时设置,因此它们不会反射(reflect)在该特定进程的生命周期内所做的任何更改。

关于python - Flask WTF 表单未随 sqlite3 数据库更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633290/

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