python - 登录系统flask TypeError:元组索引必须是整数或切片,而不是str
问题描述
我正在尝试使用 mysql.connector 模块为我的应用程序创建登录系统。对于登录系统,我想检查输入的值是否与我的数据库中的值匹配,如果是,则将它们登录。问题是我收到此错误
TypeError:元组索引必须是整数或切片,而不是 str
这是我的代码:
@app.route('/pythonlogin', methods=['GET', 'POST'])
def login():
# Output message if something goes wrong...
msg = 'Fail'
# Check if "username" and "password" POST requests exist (user submitted form)
if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
# Create variables for easy access
username = request.form['username']
password = request.form['password']
# Check if account exists using MySQL
conn = get_connection()
dbcursor = conn.cursor()
dbcursor.execute('SELECT * FROM CUSTOMER WHERE Username = %s AND Password = %s', (username, password,))
# Fetch one record and return result
account = dbcursor.fetchone()
# If account exists in accounts table in out database
if account:
# Create session data, we can access this data in other routes
session['loggedin'] = True
session['Userid'] = account['UserID']
session['Username'] = account['Username']
# Redirect to home page
return 'Logged in successfully!'
else:
# Account doesnt exist or username/password incorrect
msg = 'Incorrect username/password!'
# Output message if something goes wrong...
return render_template('login.html', msg=msg)
这是html表单:
<div class=Signup >
<h1> Sign up </h1>
<p>By signing up with us you agree to our terms of service</p>
<form action="/add_user" method="POST">
<label for="Title">Title:</label>
<select type="text" id="Title" name="Title" required>
<option value="Mr">Mr</option>
<option value="Miss">Miss</option>
<option value="Ms">Ms</option>
<option value="Mrs">Mrs</option>
<option value="Master">Master</option>
<option value="Dr">Dr</option>
<option value="Professor">Professor</option>
<option value="Sir">Sir</option>
<option value="Lady">Lady</option>
</select>
<br><br>
<input type="text" name="Firstname" value placeholder="First name" id="Firstname" required >
<br><br>
<input type="text" name="Lastname" value placeholder="Last name" id="Lastname" required >
<br><br>
<label for="DOB">Date of Birth:</label>
<input type="date" name="DOB" value placeholder="DOB" id="DOB" required>
<br><br>
<input type="email" name="email" value placeholder="Email address" id="email" required >
<br><br>
<input type="text" name="username" value placeholder="Username" id="Username" required >
<br><br>
<input type="password" name="password" value placeholder="password" id="password" required >
<br><br>
<input type="submit" value="Log in">
</form>
</div>
解决方案
推荐阅读
- ios - XCUITest:在 TableView 中查找 CollectionView 失败
- android - MIUI10 android textview setOnTouchListener ACTION_UP 未调用
- laravel - 此集合实例上不存在属性 ID
- apache-poi - 在 OptaPlanner 中读取 xls
- c# - 我可以用 await Task.Delay 内部的异步方法替换对 await Task.Delay 的调用吗?
- amazon-web-services - 启动具有较小根卷存储的实例
- javascript - 节点.js | 将一个数组中的元素插入另一个数组中的随机位置
- html - 制作线条动画加载器
- css - 元标签的响应式网页设计
- encode - 如何使用 c# 将 è、à 等国际字符转换为 excel 中的普通字符(我使用的是 ClosedXML)