Предполагая, что passworddata является строкой, выполнение for pass_data in passworddata
просто зацикливает буквы строки. Я думаю, что изменение этого:
for pass_data in passworddata:
if sha256_crypt.verify(password,pass_data):
flash("You are now login","success")
return redirect(url_for('profile'))
else:
flash("Incorrect password!")
return render_template("login.html")
на это:
if sha256_crypt.verify(password, passworddata):
flash("You are now login","success")
return redirect(url_for('profile'))
else:
flash("Incorrect password!")
return render_template("login.html")
должно исправить это.
Кроме того, не выполняйте SQL как этот!
cursor.execute("SELECT * FROM user WHERE username ='"+ username +"'")
Это очень склонно к SQL-инъекции .