【问题标题】:How to retrieve session data with Flask?如何使用 Flask 检索会话数据?
【发布时间】:2013-03-13 13:34:30
【问题描述】:

我有烧瓶+wtforms 应用程序。我可以在 login() 中看到 用户对象存储为

  if user:
   if user.verify_password(form.password.data):
    flash('You have been logged in')
    user.logins += 1

    db.session.add(History(user.uid))
    db.session.commit()

    session['user'] = user

现在我想检索用户

if 'user' in session:
       User=session.get('user')
       print User.nickname ###<< how to retrieve specific object member?

失败并显示如下消息:

Instance <User at 0x8e5a64c> is not bound to a Session; attribute refresh operation cannot proceed

【问题讨论】:

    标签: python flask wtforms


    【解决方案1】:

    这很简单。如果您想检索特定对象,只需在会话中添加变量的名称,例如session['nickname'].

    您可以通过 session['nickname'] = nickname 以相同的方式设置变量。

    在您的情况下,您可以将其更改为以下内容

    if 'user' in session:
        user = session['user']
        print user
    
    if 'nickname' in session:
        nickname = session['nickname']
        print nickname
    

    这是我用于登录的功能的简化版本。

    @app.route('/login', methods=['POST'])
    def login():
        """Authenticate User"""
        username = request.form['username'].strip()
        nickname = request.form['nickname'].strip()
        password = request.form['password']
        try:
            if Auth().VerifyLogin(username, password):
                session['username'] = username
                session['nickname'] = nickname
            else:
                # failed to login, do something.
        except Exception as why:
            app.logger.critical('.....')
    

    【讨论】:

    • 如果它是一个对象,如何检索?请检查上面的编辑代码部分。 'user' 是一个具有 user.uid、user.logins 和 user.nickname 等成员的对象
    • 非常感谢,知道了。用了你的第一种方法。不用担心对象和类似的事情。将昵称存储为会话变量而不是对象。感谢您的帮助。
    • 不用担心。顺便说一句,出于安全原因,最好在会话中存储尽可能少的信息。我将所有权限等存储在数据库中。
    • 该应用程序使用 mysql,我没有太多的数据存储会话。刚刚尝试重用会话..以便在网站中添加新的用户编辑个人资料页面。
    • 另请注意,会话 cookie 的大小限制为 4kb - 超过此值,会话就会空白,这可能会导致一些令人困惑的错误!
    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多