-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)
ログインビューでコードを実装した後、ユーザー名とパスワードを使用してログインしました。しかし、その試みの後に、 'AttributeError: 'module'オブジェクトに属性 'DoesNotExist''が表示されています –
あなたの質問をうまく編集し、少し説明してください。 –