如何使用flask在多个页面中显示用户名?

时间:2019-12-17 19:10:02

标签: python flask

我遇到了一个问题,即用户名未显示在我的flask应用程序下运行的所有页面上,它仅在主页上运行,因为我从登录功能返回了该用户名。但是,我不知道如何才能调用所有页面以使用户名在所有页面中可见。

在所附的代码中,def featured_books()并未返回应有的用户名,而是将其返回为1。如何解决此问题?

flask.py

 @app.route('/')
 # Gets correct username
 @app.route('/index')
 def home(post=1):
    return render_template("index.html", username=post)  

 # Doesn't get the username 
 @app.route('/featured_books')
 def featured_books(post=1):
    return render_template("featured_books.html", username=post)

 @app.route('/login')
 def login(post=1):
    if not session.get('logged_in'):
        return render_template("login.html")
    else:
        return home(post)

 @app.route('/login', methods=['POST'])
 def do_login():
    POST_USERNAME = str(request.form['username'])
    POST_PASSWORD = str(request.form['password'])
    secure_password = sha512_crypt.encrypt(POST_PASSWORD)

    Session = sessionmaker(bind=engine)
    s = Session()
    query = s.query(User_reg).filter(User_reg.username.in_([POST_USERNAME]), 
            User_reg.password.in_([POST_PASSWORD]))
    result = query.first()
    if result:
        session['logged_in'] = True
    else:
        flash('Wrong password!')
    return login(POST_USERNAME)

1 个答案:

答案 0 :(得分:0)

我在做同一件事,遇到了你的问题。 你知道了吗?

有人建议使用Flask-Login扩展来处理会话管理。因为我正在开发一个简单的应用程序,所以决定将用户名放入会话cookie中。然后可以从另一个页面的会话中获取它。不过,似乎阻力最小的路径可能不是最佳选择。

将其存储在route.py

session['user_name'] = user.firstname + ' ' + user.lastname

从html页面抓取

<h3> Welcome, {{session['user_name']}}! </h3>