我试图通过消除任何数据库的使用来简化Flask项目。这将消除使用SQLAlchemy的需要。
我无法复制相同的登录机制,验证我在Flask教程中学到的用户名和密码。
我在网上找到了一些示例代码,并尝试将两者结合起来。我已经阅读了尽可能多的文档,但是我仍然对提取有效的UserMixin对象感到头疼,因为在使用Flask.Login扩展时需要登录Flask应用程序。
如果有人可以帮我克服下面的代码缺陷,让他们在一起工作,我将永远感激。
以下是观点:
from flask import render_template, redirect, request, url_for, flash
from flask.ext.login import login_user, logout_user, login_required
from . import auth
from .forms import LoginForm
from ..models import User, load_user
@auth.route('/login', methods=['GET','POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.get(form.userName.data)
user = load_user(user)
if user is not None:
login_user(user, form.remember_me.data)
flash('You are now logged in!')
return redirect(request.args.get('next') or url_for('main.index'))
flash('Invalid username or password')
return render_template('auth/login.html', form=form)
以下是模型:
from flask.ext.login import UserMixin
from . import login_manager
@login_manager.user_loader
def load_user(user):
return User.get(user)
class User(UserMixin):
# proxy for a database of users
user_database = {u"user": (u"user", u"password"),u"admin": (u"admin", u"password")}
def __init__(self, username, password):
self.id = username
self.password = password
@classmethod
def get(cls,userName):
return cls.user_database.get(userName)
问题是我无法找到正确实例化用户对象以使用其他Flask Login方法的方法。无论我做什么代码变化,我都会遇到错误。