我的 Flask 应用程序具有以下路由,可在 WTForm 旁边呈现图像网格以供用户输入。我希望的行为是在提交表单但无效时保留当前的图像样本。我的想法是将来自最后一个 GET 请求的样本存储在 flask.session 代理中。但是,当从session
空列表中读取样本时会返回。
我已filesystem
在应用程序的配置中将会话类型设置为。我读过存储在 session 中的数据实际上是写入 cookie 的,因此需要是 JSON 可序列化的,但是由于我们正在处理字符串列表,所以这不是问题。
@app.route('/', methods=['GET', 'POST'])
@login_required
def hello():
input_form = TagForm()
data_index = g._index
if request.method == 'GET':
sample = sampling.sample(16, data_index)
print('storing sample')
session['curr_sample'] = sample
print('stored sample:')
print(session['curr_sample'])
elif request.method == 'POST':
print('reading sample')
sample = session['curr_sample']
print('stored sample:')
print(session['curr_sample'])
if input_form.validate_on_submit():
# commit tag to db
return redirect(url_for('hello'))
else:
flash('Could not commit.', 'danger')
return render_template('grid.html', sample=sample, form=input_form)
这是服务器的输出:
storing sample
stored sample:
['2_3_3.png', '2_11_15.png', '2_11_15.png', '2_14_15.png', '2_17_11.png', '2_11_11.png', '2_18_15.png', '2_10_0.png', '2_7_12.png', '2_3_2.png', '2_9_15.png', '2_19_12.png', '2_17_12.png', '2_5_11.png', '2_10_2.png', '2_11_11.png']
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_11_11.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_17_12.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_5_11.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_9_15.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_3_2.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_10_2.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_18_15.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_11_15.png HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2020 15:08:48] "GET /cdn/2_3_3.png HTTP/1.1" 200 -
reading sample
stored sample:
[]
127.0.0.1 - - [07/Aug/2020 15:09:40] "POST / HTTP/1.1" 302 -