Flask开发中加入Login_user后打开网页报错?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Flask开发中加入Login_user后打开网页报错?报错

爱吃鱼的程序员 2020-06-09 15:50:46 38

我想加入login_user(manager)记录用户的登录状态,但之后return render_template('home.html')?会显示网页打不开,如果不加入认证用户功能,网页是可以打开的,也就是说html是没有问题的。我看了别人示例都是这么写的,怎么自己写就出问题了?

# coding:utf-8
from models import Manager, Base
from forms import LoginForm
from flask import Flask, render_template, flash, redirect, url_for, request
from flask.ext.bootstrap import Bootstrap
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.exc import NoResultFound
from  flask.ext.login import LoginManager, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'Rockwell'
bootstrap = Bootstrap(app)
# 定义数据模型
engine = create_engine('sqlite:///database.db') # 初始化数据库连接
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.session_protection = 'basic'
login_manager.login_view = 'login'
login_manager.login_message = u"请登录您的账户."


@login_manager.user_loader
def load_user(user_id):
    return Manager.get(user_id)


@app.route('/', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        try:
            manager = session.query(Manager).filter_by(username=form.username.data).one()
            if manager.verify_password(form.password.data):
                login_user(manager)
                return redirect(request.args.get('next') or url_for('home'))
        except NoResultFound, e:
            print e
        flash (u'无效的用户名或密码。')
    return render_template('login.html', form=form)


@app.route('/home')
#@login_required
def home():
    return render_template('home.html')

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('login'))

if __name__ == '__main__':
    app.run()


前端开发 数据库连接 数据安全/隐私保护 数据库管理 Python 内存技术
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-09 15:51:02

    model可以贴出来看看么?

    问题已经解决了, Manager.get(user_id)方法没有定义,当时并没有理解load_user()的作用,只是模仿官方文档的写法,所以出错了。
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题