Я управляю веб-сайтом, использующим микрофрейм Flask и sqlite3 для хранения пользовательских логинов. В настоящее время у меня возникают проблемы с сопоставлением имени пользователя и пароля, введенных пользователем из формы HTML, с существующими записями в моей базе данных.
Я использую расширение для входа в систему фляги, чтобы помочь мне с этим, и когда я пытаюсь сопоставить, я получаю сообщение об ошибке типа:
индексы списка должны быть целыми числами или ломтиками, а не str
вот мой код на python, который превращает таблицу SQLite в переменную:
con = sql.connect("table.db")
cur = con.cursor()
cur.execute('SELECT * FROM users')
names = cur.fetchall()
Затем у меня есть этот код, который берет пароль из формы HTML и пытается сопоставить его с паролем, связанным с именем пользователя в таблице
user_name = request.form['username']
if request.form['password'] == names[user_name]['password']:
user = User()
user.id = user_name
flask_login.login_user(user)
вот что возвращает 'names':
[(7, 'ValidName', 'ValidTest', 'User@test.com'), (8, 'User2', 'password2', 'User@test2.com')]
Что должно произойти, так это то, что программа проверит ввод формы на «пароль» и сопоставит его с «паролем», связанным с именем пользователя. Так, например, если бы ValidName
и ValidTest
были введены в форму, они были бы запрошены программой и сопоставлены с записями, найденными в «именах».