我遇到了一个问题,即用户名未显示在我的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)
答案 0 :(得分:0)
我在做同一件事,遇到了你的问题。 你知道了吗?
有人建议使用Flask-Login扩展来处理会话管理。因为我正在开发一个简单的应用程序,所以决定将用户名放入会话cookie中。然后可以从另一个页面的会话中获取它。不过,似乎阻力最小的路径可能不是最佳选择。
将其存储在route.py
中session['user_name'] = user.firstname + ' ' + user.lastname
从html页面抓取
<h3> Welcome, {{session['user_name']}}! </h3>