名称错误:我的表单中未定义名称'username'


@app.route('/register/go', methods=['GET', 'POST'])
def register():
global username, password, email
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']
email = request.form['email']
cursor.execute('SELECT * FROM accounts WHERE username = %s', [username])
account = cursor.fetchone()
if account:
cursor.execute('INSERT INTO accounts VALUES(NULL,%s, %s, %s)', [username, password, email])
connection.commit()
msg = 'success'
# Show registration form with message (if any)
return render_template('register.html')

对于以下代码行,我不断收到错误,因为"名称错误:未定义名称'用户名'">

cursor.execute('SELECT * FROM accounts WHERE username = %s', [username])

你需要给username一个值,即使你把它变成全局的。使用这个:

username = ''
global username

如果if条件失败,则不会设置变量。但是,如果未填写表单,则根本不应插入到数据库中。您应该将该代码移动到if块中。

此外,您的if account条件是倒退的。仅当帐户尚不存在时,才应插入一行。

@app.route('/register/go', methods=['GET', 'POST'])
def register():
global username, password, email
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']
email = request.form['email']
cursor.execute('SELECT * FROM accounts WHERE username = %s', [username])
account = cursor.fetchone()
if account:
msg = 'username already taken'
else:
cursor.execute('INSERT INTO accounts VALUES(NULL,%s, %s, %s)', [username, password, email])
connection.commit()
msg = 'success'
else:
msg = 'Username and password are required'
# Show registration form with message (if any)
return render_template('register.html')

最新更新