新手程序员:)
我有一个MYSQL数据库设置和一个“用户”表。在我的Flask应用程序中,我可以让用户创建登录凭据。当用户登录时,正确-我希望他们的名称{{session.name}而不是用户名显示在重定向页面上。不知怎的,我不能让它工作。我可以显示他们的用户名{{session.username},但这不是我想要的
不知何故,在某个地方,它并没有从DB那里得到名字
我不确定是否通过会话进行了正确的DB调用
我的数据库如下所示:
MariaDB [chrimata]> DESCRIBE users;
+---------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| username | varchar(30) | YES | | NULL | |
| password | varchar(100) | YES | | NULL | |
| register_date | timestamp | NO | | current_timestamp() | |
+---------------+--------------+------+-----+---------------------+----------------+
这是我的登录码:
@app.route('/login', methods=['GET', 'POST'])
def login():
msg=''
if request.method == "POST" :
details = request.form
Username = details['username']
Password_candidate = details['password']
# Check if account exists using MySQL
cursor = mysql.connection.cursor()
# Check DB for username...
result = cursor.execute("SELECT * FROM users WHERE username = %s", [Username])
if not Username and not Password_candidate :
error = 'Please fill out the form!'
return render_template('login.html', msg=error)
if result > 0:
#get the stored hash
account = cursor.fetchone()
password = account['password']
Name = account['name']
if Password_candidate == password:
session['login_in'] = True
session['username'] = Username
session['name'] = Name
我怀疑是fetchone()方法导致了这个问题,或者是它之前的DB调用。 提前谢谢
你应该得到一条错误消息
如果只给出了一个参数,那么即使后面没有任何参数,也必须加逗号
仅获取所需的数据就足够了,仅此而已
最后,请不要以明文形式保存密码
相关问题 更多 >
编程相关推荐