Итак, у меня есть проблема. Я пытаюсь проверить, действителен ли пароль для простого веб-приложения Flask.
Вот упрощенная версия моего кода:
@app.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user_password = db.session.query(User.password).filter(User.username == username).first()
if password != str(user_password):
return "The password is invalid."
else:
return "Login successful."
Но это не работает... Это всегда недействительно, и я думаю, что знаю, почему. Запрос user_password на самом деле не возвращает пароль в виде строки. Если пароль Hello1234, возвращается ("Hello1234",). Мне нужно, чтобы user_password просто получал возвращаемую строку в виде строки, чтобы я мог сравнить ее с пользовательским вводом.
Как я могу это сделать?
first()
) и проверитеlen(user_password)
10.05.2020.first()
просто вернетNone
, когда набор результатов пуст. Примечание: обычно вы хотите использовать.one_or_none()
, так как он будет обнаруживать ошибки программирования при неожиданном возврате более одной записи, облегчая отладку, вместо того, чтобы молча отбрасывать дополнительные записи. 10.05.2020