-1

我是 python 和 Flask 的新手。我创建了一个登录和注册页面,一切正常。现在,我在注册页面使用 werkzeug 进行密码安全,密码以加密形式生成并存储在数据库中,但是当我尝试登录时在那里我收到一个错误“NameError:未定义全局名称'hashed_pwd'”,请为我提供解决方案。

@app.route('/signUp', methods=['POST','GET'])
def signUp():   
        _name = request.form['user_name']        #database connectivity
        _password = request.form['user_password']
        _pname = request.form['patient_name']
        _email = request.form['user_email']
        _cont = request.form['user_contact']
        _add = request.form['user_address']

        if _name and _password and _pname and _email and _cont and _add:
            conn = mysql.connect()
            cursor = conn.cursor()
            hashed_pwd=generate_password_hash(_password)    #password generated
            query_string = """INSERT INTO tbl_puser (user_name,user_password,patient_name,user_email,user_contact,user_address) VALUES('%s','%s','%s','%s','%s','%s');"""%(_name,hashed_pwd,_pname,_email,_cont,_add)
            print query_string
            cursor.execute(query_string)
            conn.commit()
            cursor.close()
            conn.close()
            flash('You were successfully registered')
            return render_template('select.html')


@app.route('/Login',methods=['POST','GET'])
def login():

    user_name=request.form['uname']
    user_password=request.form['psw']
    # NameError: global name 'hashed_pwd' is not defined error 
    check_password_hash(hashed_pwd,user_password) 

        if user_name and user_password:
            conn = mysql.connect()
            cursor = conn.cursor()
            cursor.execute("SELECT * from tbl_puser where user_name='" + user_name + "' and user_password='"+ user_password +"'")

            print "SELECT * from tbl_puser where user_name='" + user_name + "' and user_password='"+ user_password +"';"

            data = cursor.fetchall()
            print data
            if len(data) != 0:
                return render_template("select.html")
            else:
                return redirect(url_for('index'))

if __name__ == '__main__':
    app.run()
4

1 回答 1

1

你只是忘了定义它

user_password = request.form.get('psw', '')
# Add next line
hashed_pwd = generate_password_hash(user_password)
check_password_hash(hashed_pwd,user_password)

并更好地使用get方法request.form来获取项目的值。

于 2017-08-31T11:17:38.280 回答