提交后烧瓶 wtforms 保持为空

时间:2021-04-25 20:03:57

标签: flask flask-login

我的代码是: 路线.py:

@app.route('/login', methods=['GET', 'POST'])
def login():

    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()  # None if invalid
        if user is None or not user.check_password(form.password.data):
            flash('Invalid username or password')
            return redirect(url_for('login'))

        login_user(user, remember=form.remember_me.data)
        return redirect('dashapp')

    print(form.errors)
    return render_template('login.html', form=form)

登录.html

{% extends "base.html" %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block app_content %}
    <h3>Log in</h3>
    <div class="row">
    <form>
        <div class="col-md-4">

            {{ wtf.quick_form(form) }}
        </div>
    </form>
    </div>
{% endblock %}

models.py:

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

class User(UserMixin, db.Model):
    
    id = Column(Integer, primary_key=True)
    username = Column(String(64), index=True, unique=True)
    email = Column(String(120), index=True, unique=True)
    password_hash = Column(String(128))
    is_admin = Column(Boolean, default=False)


    def set_password(self, password):

        self.password_hash = generate_password_hash(password)

    def check_password(self, password):

        return check_password_hash(self.password_hash, password)

提交时我的表单仍然是空的,所以它没有通过 form.validate_on_submit()。 我试图简化,因为你可以看到我的代码,但它仍然无法正常工作

表单数据对象是用户名:无,密码:无,提交:假。 CSFR Token 不为空 所以问题不在那里。

请找到我的表格:

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = StringField('Password', validators=[DataRequired()])
    remember_me = BooleanField('Remember Me')
    submit = SubmitField('Log In')

1 个答案:

答案 0 :(得分:1)

我的更正删除表单标签: 感谢@Dimitry 和@cizario

{% extends "base.html" %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block app_content %}
    <h3>Log in</h3>
    <div class="row">

        <div class="col-md-4">

            {{ wtf.quick_form(form) }}
        </div>

    </div>
{% endblock %}
相关问题