Flask登录更新模型,现在我无法登录

时间:2017-03-18 16:50:15

标签: python flask flask-login

我在我的用户模型中添加了一个user_id,我最初使用的是电子邮件作为我的PK,但我想在开箱即用的烧瓶管理中使用它。我添加了一个user_id字段并迁移了我的数据库。现在每当我从页面点击登录提交时都会刷新。

这是我的用户模型:

class User(db.Model):

    __tablename__ = 'user'

    user_id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String)
    password = db.Column(db.String)
    authenticated = db.Column(db.Boolean, default=False)

    def is_active(self):
        """True, as all users are active."""
        return True

    def get_id(self):
        """Return the email address to satisfy Flask-Login's requirements."""
        return self.user_id

    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return self.authenticated

    def is_anonymous(self):
        """False, as anonymous users aren't supported."""
        return False

这是我的登录视图:

@app.route("/login", methods=["GET", "POST"])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.get(form.email.data)
        if user:
            if bcrypt.check_password_hash(user.password, form.password.data):
                user.authenticated = True
                db.session.add(user)
                db.session.commit()
                login_user(user, remember=True)
                return redirect(url_for("home"))
    return render_template("login.html", form=form)

登录模板:

{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-2">
    <form method="POST" action="/login">
        {{ form.csrf_token }}

        <div class="form-group">
        <label for="exampleInputEmail1">Email address</label>
        {{ form.email(size=20, class="form-control col-sm-4") }}
        </div>

        <div class="form-group">
          <label for="exampleInputPassword1">Password</label>
          {{ form.password(size=20, class="form-control col-sm-4"  ) }}
        </div>
        <br />
        <br />
        <button type="submit" class="btn btn-default" value="Login">Submit</button>

    </form>
</div>
</div>
</div>
{% endblock %}

用户加载程序:

@login_manager.user_loader
def user_loader(user_id):
    return User.query.get(user_id)

我做错了什么?

0 个答案:

没有答案