2017-04-04 6 views
-1

Ich möchte ein funktionierendes Anmeldeformular erstellen, das das flash-webframework verwendet. Ich verwende Google Datastore. Zurzeit erhalte ich den folgenden Fehler.'NoneType' -Objekt hat kein Attribut 'password'

'NoneType' object has no attribute 'password'

Auch bin ich nicht sicher über die id Attribut ich im Benutzermodell verwendet haben. Möglicherweise erkennt der Server keine IDs für jeden Benutzer. Irgendwie verwirrt. Jede Hilfe wird geschätzt.

meine models.py Datei im Blick:

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 Datei:

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) 

Antwort

1

Sie sind zur Zeit nur Überprüfung Wetter Benutzername existiert oder nicht. Sie müssen diese Entität zuerst abrufen und dann den Benutzernamen und das Passwort überprüfen. Dies wird dein Problem lösen.

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

Nach der Implementierung des Codes in der Login-Ansicht habe ich mich mit Benutzername und Passwort angemeldet; Nach diesem Versuch zeigt es jedoch an, dass "AttributeError: 'modul' Objekt kein Attribut 'DoesNotExist'' hat. –

+0

Bitte bearbeiten Sie Ihre Frage und erklären Sie ein wenig. –

Verwandte Themen