0

我的 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 -
4

0 回答 0