首页 > 解决方案 > 登录系统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>

标签: pythonmysqldatabaseflaskmysql-connector

解决方案


推荐阅读