[英]'NoneType' object has no attribute 'username'?
so i got this error 所以我得到这个错误
AttributeError: 'NoneType' object has no attribute 'username' AttributeError:'NoneType'对象没有属性'username'
any suggestions, 有什么建议么,
Models.py 型号
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
password = db.Column(db.String(20), unique=True)
def __init__(self, username, password):
self.username = username
self.password= bcrypt.generate_password_hash(password, 10)
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return (self.id)
def __repr__(self):
return '<User %r>' % self.username
Views.py Views.py
@app.route('/register', methods=['GET','POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
user = User(request.form['username'] , request.form['password'] )
username = request.form['username']
password = request.form['password']
storeduser = User.query.filter_by(username=username).first()
if storeduser.username is not None and storeduser.username == request.form['username']:
return 'User already Exist !'
else:
db.session.add(user)
db.session.commit()
flash('User successfully registered')
return redirect(url_for('index'))
Pretty much if client username matches a current username output Existing user registered, if not register username. 如果客户端用户名与当前用户名输出匹配,则几乎是现有用户注册(如果未注册)。
im referring to my username in my models(in case you were wondering) 我在模型中指的是我的用户名(如果您想知道的话)
The User.query.filter_by(username=username).first()
query returned None
, meaning the user was not found. User.query.filter_by(username=username).first()
查询返回None
,表示找不到用户。
You need to test if storeduser
is not None
first, not storeduser.username
: 您需要先测试一下storeduser
是否不是None
, 而不是 storeduser.username
:
if storeduser is not None and storeduser.username == request.form['username']:
return 'User already Exist !'
Because you queried on request.form['username']
the latter test is redundant, you only really need to use; 因为您是在request.form['username']
上查询的,所以后面的测试是多余的,因此您只需要使用;
if storeduser is not None:
return 'User already Exist !'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.