簡體   English   中英

NameError:在我的表單中未定義名稱“用戶名”

[英]NameError: name 'username' is not defined in my form

@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')

我持續收到以下代碼行的錯誤,因為“ NameError:未定義名稱'用戶名'”

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

即使您將username為全局,也需要為其賦予一個值。 用這個:

username = ''
global username

如果if條件失敗, 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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM