2017-04-04 24 views
-1

我想用flask web框架創建一個功能性登錄表單。我正在使用Google數據存儲。目前,我收到以下錯誤。'NoneType'對象沒有'password'屬性

'NoneType' object has no attribute 'password'

另外,我不知道我已經在用戶模型中使用的id屬性。可能是服務器無法識別每個用戶的ID。有點困惑。任何幫助表示讚賞。

我鑑於models.py文件:

import datetime 

from google.appengine.api import memcache 
from google.appengine.api import users 
from google.appengine.ext import db 
from google.appengine.ext import ndb 

class User(ndb.Model): 
    id = ndb.StringProperty() 
    username = ndb.StringProperty() 
    email = ndb.StringProperty() 
    password = ndb.StringProperty() 
    joined_at = ndb.DateTimeProperty() 
    updated_at = ndb.DateTimeProperty() 
    is_admin = ndb.BooleanProperty(default=False) 

    # Flask-Login integration 
    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 

forms.py文件:

class LoginForm(Form): 
    username = StringField('Username', validators=[DataRequired()]) 
    password = PasswordField('Password', validators=[DataRequired()]) 

main.py:

from flask import Flask, g, flash, render_template, url_for, redirect 
from flask_login import LoginManager, login_user 
import models 
import forms 

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    form = forms.LoginForm() 
    if form.validate_on_submit(): 
     try: 
      user = models.User.exists(username = form.username.data) 
     except models.DoesNotExist: 
      flash("Your email does not match", "error") 
     else: 
      if user.password == form.password.data: 
       login_user(user) 
       flash("You've been logged in!", "success") 
       return redirect(url_for('index')) 
      else: 
       flash("Your password does not match!", "error") 
    return render_template('login.html', form=form) 

回答

1

您目前只是檢查天氣的用戶名存在或不。您必須首先獲取該實體,然後檢查用戶名和密碼。這將解決您的問題。

user_check = User.query(User.username == form.username.data).get() 

    if user_check: 
     if user_check.password == form.password.data: 
      print "Success" 
     else: 
      print "Wrong Password" 
    else: 
     print "No Username Exists" 
+0

在登錄視圖中執行代碼後,我使用用戶名和密碼登錄;然而,在嘗試之後,它顯示'AttributeError:'模塊'對象沒有屬性'DoesNotExist'' –

+0

請編輯你的問題並解釋一點。 –

相關問題