首页 > 解决方案 > 为什么我的脚本中不断出现“TypeError:字符串索引必须是整数”?

问题描述

我正在使用 MySQL 构建一个用户烧瓶应用程序,并且在用户登录代码中我收到错误 TypeError: string indices must be integers every time。

@app.route('/signin',methods=['GET','POST'])
def signin():
    if request.method == 'POST':
        email = request.method['email']
        password_entered = request.method['password']
        cur = mysql.connection.cursor()
        user = cur.execute("SELECT * FROM users WHERE email = %s",(email))
        if user > 0:
            data = cur.fetchone()
            real_password = data['password']
            name = data['name']
            email = data['email']
            if pbkdf2_sha256.verify(password_entered,real_password):
                session['logged_in'] = True
                session['name'] = name
                session['email'] = email
                flash('Sign In Successful!',category='info')
                return redirect(url_for('index'))
            else:
                flash('Details Incorrect!Please try again.',category='error')
                return render_template('signin.html')
        else:
            flash('User does not exist!Please Register.',category='error')
            return redirect(url_for('signup'))

    return render_template('signin.html')

Python 显示错误来自email = request.method['email']. 请协助。

标签: pythonflask

解决方案


因为request.method是根据文档和您之前使用的字符串:if request.method == 'POST':. 因此,用“电子邮件”索引它不是一个明智的要求。password_entered = request.method['password']之后应该会产生相同的错误。

见:https ://flask.palletsprojects.com/en/1.1.x/api/#flask.Request.method

您可能需要request.formor values 数据。

请参阅:https ://flask.palletsprojects.com/en/1.1.x/quickstart/#accessing-request-data


推荐阅读