美好的一天。我从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只接受会话中的小数据?感谢。
答案 0 :(得分:0)
对不起,您不应该在会话中存储大图片。
实现它的一个好方法是存储唯一的图像ID,并使用此唯一ID调用url。像这样:
<img src = "//myview?id=513654534343543543" />