2016-11-05 45 views
0

,所以我得到這個錯誤'NoneType'對象沒有屬性'username'?

AttributeError的: 'NoneType' 對象有沒有屬性 '用戶名'

任何建議,

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

@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')) 

如果客戶端用戶名與當前用戶名輸出匹配,那麼它們幾乎相同 現有用戶註冊,如果不註冊用戶名。

IM指我在我的模型的用戶名(如果你想知道)

+0

'User.query.filter_by(username = username).first()'查詢返回'None',表示找不到用戶。 –

+0

我有點不明白,因爲代碼能夠渲染 用戶已經存在,當我把相同的用戶名, 我怎麼做它添加一個用戶名和重定向到索引頁? –

回答

1

User.query.filter_by(username=username).first()查詢返回None,這意味着用戶沒有被發現。

您需要測試如果storeduserNone第一,storeduser.username

if storeduser is not None and storeduser.username == request.form['username']: 
    return 'User already Exist !' 

因爲你詢問關於request.form['username']後者考驗的卻是多餘的,你只有真正需要使用;

if storeduser is not None: 
    return 'User already Exist !' 
+0

讓我給這個一去的Martijn –

+0

怎麼這樣,我指定是否 storeduser ==的Request.Form [「用戶名」] ,以確保用戶可以用不同的用戶名註冊,並沒有註冊的用戶? 你知道我的意思嗎? –

+0

@EliHood:你不需要。如果'storeduser'不是'None',那麼你從數據庫中得到了一個結果,如果該用戶在表單中給出了相同的'用戶名'值,那麼*只會發生*。所以'如果storeduser不是None'就夠了*這裏。 –

相關問題