将flask会话变量传递到其他视图将返回类型None - javascript

我试图将在登录视图上设置的会话变量传递给另一个视图。但是,如果提交了表单,则会话变量始终返回无,我希望保留会话变量。

工具页面具有一些表单字段,以及一个文本框,该文本框基于会话['foo']进行自动完成搜索,该会话在登录成功后发送。

@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'])

实用程序

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(),我希望此方法返回的数据在会话的整个过程中都保留。

编辑:
解决方案,会话变量对象太大。解决此问题的一些方法可能包括:

使用AJAX避免每次提交时刷新页面,从而不刷新会话对象
将对象分成较小的块
避免将大对象存储在cookie中-使用本地存储

参考方案

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

从documentation

  关于基于cookie的会话的说明:Flask将采用您放入会话对象中的值并将其序列化为cookie。如果发现某些值在请求中不存在,则表明确实启用了cookie,并且没有收到明确的错误消息,请检查页面响应中cookie的大小与网络浏览器支持的大小。

原始帖子:

  从技术上讲,utils.get_data方法是一个与Web调用不同的会话。 get data方法试图实现什么?

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

JSON.parse需要转义哪些字符 - javascript

                        我注意到您无法在JSON中保存1B(转义)以保存JSON.parse函数,您将得到SyntaxError: Unexpected token(在Google chrome中),需要将其写为unicde \u001b。我在Python中编写了json_serialize函数,我还需要转义字符串中的其他哪些字符?这…

Javascript IF语句 - javascript

                        嗨,我有这段代码可以正常工作,并将两个日历显示为一个日历。我还有一个php变量$login_session,其中包含登录电子邮件地址的用户。关于如何显示[email protected]日历的任何想法(伪代码)IF $login_session == "[email protected]&#…

提交初始化后删除某些帖子数据 - javascript

在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _POST表单数据?我想象过程的方式:提交->收集$ _POST数据->发送数据我想做的事:提交->收集$ _POST数据->删除某些元素->发送数据这样就不必更改处理页面以过滤掉不希望接收的元素了吗? javascript大神给出的解决方案 当然可以,您可以在JS …

Javascript历史记录。如果不是当前站点,请默认转到页面 - javascript

我在搜索结果中使用以下history.go,并具有跨浏览器可接受的结果。我希望使用PHP解决方案,但这会满足需求,直到我意识到一个更大的问题。<a href="javascript:history.go(-1)">Return To Search Results</a> 我唯一的问题是查看者来自不是源自搜索页面ht…