如何将base64图像存储到Flask中的用户会话中

时间:2016-05-26 15:49:41

标签: python session flask

美好的一天。我从Python开始使用Flask。一切都很顺利,但我对会话有问题。我的想法是在用户登录后将用户的base64头像存储到他的会话中。然后,在布局中只需通过<img src="data:image/png;base64,{{session.user.photo}}" />访问他的头像。

问题出现在我登录时,将base64放入会话并重定向到/home。在/home路由内部,我有一个简单的访问控制,如果会话没有用户密钥,则重定向到再次登录。问题是在设置会话并重定向到主页后,会话在/ home中为空,并且从不呈现模板。

@root.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        if 'user' in session:
            return redirect('/home')
        else:
            return render_template('login.html', message = None)
    else:
        username = request.form['username']
        pwd = request.form['password']
        user = User.where('username', username).where('pwd', pwd).get().first()
        if(user == None):
            return render_template('login.html', message = 'Usuario o contraseña incorrecta')
        else:
            session['user'] = {
                'id': user.id,
                'username': user.username,
                'photo': user.photo
            }
            return redirect('/home')

@root.route('/home')
def home():
    if 'user' in session: # THIS IS FALSE, SESSION IS EMPTY
        return render_template('home.html')
    else:
        return redirect(url_for('root.login', message = None))

Flask只接受会话中的小数据?感谢。

1 个答案:

答案 0 :(得分:0)

对不起,您不应该在会话中存储大图片。

实现它的一个好方法是存储唯一的图像ID,并使用此唯一ID调用url。像这样:

<img src = "//myview?id=513654534343543543" />