【问题标题】:flask front end session is a copy of server side session烧瓶前端会话是服务器端会话的副本
【发布时间】:2021-02-24 08:42:29
【问题描述】:

我有一个小烧瓶应用程序最近开始出现奇怪的行为:闪存消息不会消失(移动到不同的路线时)。它们会再次出现在每一页上。

我了解到显示消息的辅助函数:get_flashed_messages 应该从会话中弹出消息。我使用日志记录测试了它的功能,发现它工作正常:“_flash”消息在调用之前在会话中,而在调用之后不在会话对象上。

然而,当我随后转到新路线时,它们重新出现在会话对象上,并再次显示在页面上。

因此,我确定 jinja2 模板可以访问的会话对象是真实对象的副本,因为它实际上并没有改变我在 app.py 文件中可以访问的那个(我可以正确地改变它) )。

以前有人遇到过这个问题吗?我更新了我的烧瓶和所有烧瓶相关的软件包,但这没有帮助。

这是我的 requirements.py 文件的一部分(所有可能会产生影响的包)。

flask==1.1.2
flask_wtf==0.14.3
flask_cors==3.0.10
jinja2==2.10.3
waitress==1.4.4
Flask-Mobility
secrets==1.0.2
werkzeug==0.16.0
wtforms==2.3.3

这是我的 app.py 文件的开始

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import secrets
import requests
from functools import wraps
from bokeh.embed import server_document, server_session
from bokeh.client.session import pull_session
from bokeh.util.session_id import generate_session_id
from flask import Flask, url_for, render_template, redirect, jsonify, send_from_directory, session, request, flash, Markup
from flask_cors import CORS
from flask_mobility import Mobility
from waitress import serve

app = Flask(__name__)
CORS(app)    
Mobility(app)
app.config['SECRET_KEY'] = secrets.token_urlsafe(16)

非常典型的设置。我认为这可能是前端缓存的问题或其他问题,所以我在隐身模式下尝试了它,但它仍然有同样的问题......

当然,前端也没什么特别的:

  <article class="flashes">
    {% with messages = get_flashed_messages() %}
      {% if messages %}
        <ul>
          {% for message in messages %}
            <li class="card" onclick=delete_this(this)>
              <a title="remove"><p style="margin: 15px; color: #868A8E; cursor: pointer;">
                {{message}}
                <i class="small material-icons right">close</i>
              </p></a>
            </li>
          {% endfor %}
        </ul>
      {% endif %}
    {% endwith %}
  </article>

【问题讨论】:

    标签: python flask session


    【解决方案1】:

    好的,我知道了。我在会话中保存了一个标记对象而不是常规字符串。当我完全删除它时,它开始工作。真的不知道它是否只是一个太大的对象,或者它是否是导致问题的对象的性质。不管怎样,就是这样。

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 2018-08-18
      • 2018-06-23
      • 1970-01-01
      • 2011-07-19
      • 2017-08-10
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多