Я получил простейшую базу данных:
class users(db.Model):
_id = db.Column("id", db.Integer, primary_key=True)
username = db.Column('username', db.String(100))
password = db.Column('password', db.String(100))
Вот мои функции входа в систему, регистрации, пользователя и выхода из системы:
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == "POST":
username = request.form['username']
password = request.form['password']
found_user = users.query.filter_by(username=username).first()
found_pass = users.query.filter_by(password=password).first()
if found_user and found_pass:
session['logged_in'] = True
flash("You've just logged in!")
return redirect(url_for('user'))
else:
error = 'Invalid Data. Please try again.'
return render_template('login.html', error=error)
@app.route('/register', methods=['POST', 'GET'])
def register():
if request.method == "POST":
username = request.form['username']
password = request.form['password']
session['username'] = username
session['password'] = password
found_user = users.query.filter_by(username=username).first()
if found_user:
flash("User already registered!")
elif not request.form['username'] or not request.form['password']:
flash("Enter valid data!")
else:
usr = users(username, password)
db.session.add(usr)
db.session.commit()
flash("User registered!")
return render_template('register.html')
@app.route('/user')
@login_required
def user():
if session.get('logged_in'):
return render_template('user.html')
else:
return redirect(url_for('login'))
@app.route('/logout')
@login_required
def logout():
session.pop('logged_in', None)
flash("You've just logged out!")
return redirect(url_for('login'))
Мне нужно получить текущий сеанс ['username' ], чтобы отобразить его в шаблоне html, но каждый раз, когда я вызываю его и передаю аргумент html через пользовательскую функцию, например:
@app.route('/user')
@login_required
def user():
user = session['username']
if session.get('logged_in'):
return render_template('user.html', user=user)
else:
return redirect(url_for('login'))
возвращает последнюю запись в базе данных имени пользователя Я зарегистрировался вместо того, который в настоящее время вошел в систему, кто-то может объяснить, почему это происходит?