gpt4 book ai didi

javascript - 将 Flask session 变量传递给不同的 View 返回类型 None

转载 作者:行者123 更新时间:2023-12-03 07:32:57 25 4
gpt4 key购买 nike

我正在尝试将登录 View 上设置的 session 变量传递到另一个 View 。但是,如果提交表单, session 变量始终返回 None,我希望保留 session 变量。

工具页面有一些表单字段和一个文本框,用于处理基于 session ['foo'] 的自动完成搜索,该 session 在良好登录时发送。

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# Get some form variables here
if login is valid:
login_user(user, remember=True)
session['foo'] = utils.get_data()
return redirect(url_for('tools'))
return render_template('login.html')

@app.route("/tools", methods=['GET', 'POST'])
@login_required
def tools():
if session['foo'] is None:
print "Data is None type, getting data"
session['foo'] = utils.get_data()

if request.method == 'POST':
# Handling some forms here
# If one of these forms are submitted, session['foo'] is set to None :(

return render_template('tools.html', foo_data=session['foo'])

Utils.py

def get_data():
response = requests.post(url, data=data) # FYI, server won't allow GET for this call.
# Do json type stuff here to make response.content nice for javascript
return response

本质上,这段代码发生的情况是,每次提交表单时,我都必须检查它是否为 None 并调用 utils.get_data(),我希望此方法返回的数据保留整个表单长度 session 。

编辑:解决办法,session变量对象太大。解决这个问题的一些方法可能包括:

  • 使用 AJAX 避免每次提交刷新页面,从而不会刷新 session 对象
  • 将对象分割成更小的 block
  • 避免在 Cookie 中存储大型对象 - 使用本地存储

最佳答案

检查放入 session 的数据大小。如果太大,请尝试使用较小的对象。

来自documentation

A note on cookie-based sessions: Flask will take the values you put into the session object and serialize them into a cookie. If you are finding some values do not persist across requests, cookies are indeed enabled, and you are not getting a clear error message, check the size of the cookie in your page responses compared to the size supported by web browsers.

原帖:

Technically the utils.get_data method is a separate session than the web call. What is the get data method trying to achieve?

关于javascript - 将 Flask session 变量传递给不同的 View 返回类型 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35741023/

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