Python: 无法从导入的模块调用方法
Python: Cannot call method from imported module
我有一个简单的用户登录功能。它首先确认用户详细信息是否正确;
import user
@app.route("/login/", methods=['POST', 'GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
_email = request.form['email']
_password = request.form['password']
if user.loginValidate(_email, _password) == True:
session['username'] = user.getUserName(_email)
session['loggedin'] = True
return redirect(url_for('home'))
else:
flash('Email or password incorrect!')
return render_template('login.html')
现在由于某些原因,当我尝试调用 loginValidate
时,我得到一个错误 'function' object has no attribute loginValidate
。
该模块确实有 loginValidate
,其中 returns True
或 False
,所以我看不出问题所在。
loginValidate
(在 user
模块内):
def loginValidate(this_email, this_password):
db = sqlite3.connect('data')
cursor = db.cursor()
cursor.execute("SELECT password FROM users WHERE email = ?", (this_email,))
row = cursor.fetchone()
hash = row[0]
db.close()
return hash == bcrypt.hashpw(this_password, hash)
感谢任何帮助!
尝试:
from user import loginValidate
和:
if loginValidate(_email, _password) == True:
虽然我不能准确指出出现这种情况的地方,但错误本身似乎是一个足够明确的提示。 Python 认为 "user" 是一个函数,而不是一个模块。也许在别处定义了一个 "user" 函数,而 python 实际上导入了那个
我有一个简单的用户登录功能。它首先确认用户详细信息是否正确;
import user
@app.route("/login/", methods=['POST', 'GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
_email = request.form['email']
_password = request.form['password']
if user.loginValidate(_email, _password) == True:
session['username'] = user.getUserName(_email)
session['loggedin'] = True
return redirect(url_for('home'))
else:
flash('Email or password incorrect!')
return render_template('login.html')
现在由于某些原因,当我尝试调用 loginValidate
时,我得到一个错误 'function' object has no attribute loginValidate
。
该模块确实有 loginValidate
,其中 returns True
或 False
,所以我看不出问题所在。
loginValidate
(在 user
模块内):
def loginValidate(this_email, this_password):
db = sqlite3.connect('data')
cursor = db.cursor()
cursor.execute("SELECT password FROM users WHERE email = ?", (this_email,))
row = cursor.fetchone()
hash = row[0]
db.close()
return hash == bcrypt.hashpw(this_password, hash)
感谢任何帮助!
尝试:
from user import loginValidate
和:
if loginValidate(_email, _password) == True:
虽然我不能准确指出出现这种情况的地方,但错误本身似乎是一个足够明确的提示。 Python 认为 "user" 是一个函数,而不是一个模块。也许在别处定义了一个 "user" 函数,而 python 实际上导入了那个