2017-04-04 20 views
-1

フラスコのWebフレームワークを使用して機能的なログインフォームを作成したいと考えています。私はGoogle Datastoreを使用しています。現在、次のエラーが発生しています。'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: 'module'オブジェクトに属性 'DoesNotExist''が表示されています –

+0

あなたの質問をうまく編集し、少し説明してください。 –

関連する問題