Когда пользователь успешно входит в систему, он видит своего рода приветствие со своей картинкой и «Привет, имя пользователя!» текст. Но проблема в том, что иногда он не показывает их имя пользователя (просто «Привет,!»), Но их изображение профиля всегда отображается . Я заставил сценарий JS ждать 200 мс (дал ему время, чтобы передать имя пользователя в div приветствия), но это не решило проблему.
PS Я заметил, что это происходит, когда я вытаскиваю пользователя из сеанс и перезапустите сервер. Если я не перезапускаю сервер, но выхожу из системы и снова вхожу в систему, все в порядке - я вижу свое имя пользователя в приветственном div.
Вот код:
routes. py
loginForm = LoginForm.from_json(req)
sql = "SELECT * FROM `users` WHERE `username`=%s"
cur.execute(sql, (loginForm.log_username.data))
row_headers = [x[0] for x in cur.description]
user = cur.fetchone()
if user:
user = dict(zip(row_headers, user))
if bcrypt.check_password_hash(user['password_hash'], loginForm.log_password.data):
session['username'] = user['username']
session['picture'] = user['picture']
логин. html
if (response.ok) {
setTimeout(
function() {
go(); // function that shows the greeting div
}, 200);
} else {
приветствие div в логине. html
<div class="greet">
<img class="photo rounded-full mx-auto" src="{{ url_for('static', filename=session['picture']) }}" alt="">
<div class="text-center font-medium text-base">
Hello, {{ session['username'] }}!
</div>
</div>