我正在编写一个非常简单的flask web应用程序,以便来自我工作的地方的测试人员可以测试我的深度学习模型,而无需下载项目。
它有一个接收pdf文件和表单中的字符串的视图(深度学习模型的输入)和另一个显示另一个字符串的视图(深度学习模型的输出)。
我试图使用flask.session
对象从第一个视图中选取数据并将其传递给第二个视图,然后将其存储在flask.g
对象中,以便在Jinja模板中显示它。
我的问题是flask.session
对象将数据从一个视图丢失到另一个视图。如何避免?
我不太担心安全问题,因为只有我工作的测试员才能访问这个web应用程序。
抱歉,如果这个问题很愚蠢的话,我是个十足的新手。你知道吗
我知道可能有最好的方法可以做到这一点,但我想保持它尽可能简单,因为我这样做只是为了测试深入学习模型容易。你知道吗
from flask import (
Blueprint, flash, g, redirect, render_template, request, session, url_for
)
bp = Blueprint('book', __name__, url_prefix='/book')
@bp.route('/initialpage', methods=('GET', 'POST'))
def initialpage():
if request.method == 'POST':
book_file = request.form['book']
parsed = parser.from_file(book_file)
book = parsed["content"]
question = request.form['question']
error = None
if not book:
error = 'Book is required.'
elif not question:
error = 'Question is required.'
if error is None:
session.clear()
session['book'] = book
session['question'] = question
print(session['question'])
return redirect(url_for('book.finalpage'))
flash(error)
return render_template('book/initialpage.html')
@bp.route('/finalpage')
def finalpage():
book_body = session.get('book')
book_question = session.get('question')
if book_body is None:
g.book = None
elif book_question is None:
g.question = None
else:
g.book = book_body
g.question = book_question
return render_template('book/finalpage.html')
存储在session['book']
和session['question']
中的数据在从'/initialpage'
传递到'/finalpage'
时丢失。你知道吗
我终于解决了这个问题! 在我的情况下,我认为问题是我的数据太大,无法通过烧瓶会话. 我发现大多数浏览器都不支持大于~4000字节的会话cookie,我的数据大约为~10 MB。 所以我的想法是创建一个数据库来存储数据,并通过烧瓶会话. 作为数据库,我使用pythonsqlite3。 连接到数据库和初始化数据库的函数被编码在一个单独的文件中。 代码如下:
相关问题 更多 >
编程相关推荐