我的代码是: 路线.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')
答案 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 %}