我设置了一个烧瓶网络应用程序,目前我的代码已经设置好,以便当用户注册时,他们的详细信息会保存到数据库中,使用SQLite和SQLAlchemy进行设置。在创建新用户的那一刻 - 它在新页面上返回return '<h1>New user has been created!</h1>'
,但我希望将其显示在同一个html页面上。
我查看了在线消息和Stack Overflow消息的示例,但不确定如何使用我的代码设置方式进行设置。我已在app.py
文件和signup.html
模板中添加了注册和登录部分,以重现问题。
@app.route('/signup/', methods=['GET', 'POST'])
def signup():
form = RegisterForm()
if form.validate_on_submit():
hashed_password = generate_password_hash(form.password.data, method='sha256')
new_user = User(username=form.username.data, email=form.email.data, password=hashed_password)
db.session.add(new_user)
db.session.commit()
return '<h1>New user has been created!</h1>'
return render_template('signup.html', form=form, errors=form.errors.items())
{% block body_content %}
<div class="container">
<form method="POST" action="/signup">
{{ form.csrf_token }}
<div class="form-group">
{{ form.username }}
</div>
<div class="form-group">
{{ form.email }}
</div>
<div class="form-group">
{{ form.password }}
</div>
<button type="submit" class="btn btn-primary">Sign Up</button>
</form>
<div class="errors">
{% for field, err in errors %}
<p>{{field}} : {{err|join(', ')}}</p>
{% endfor %}
</div>
</div>
{% endblock %}
@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()
if user:
if check_password_hash(user.password, form.password.data):
login_user(user, remember=form.remember.data)
return redirect(url_for('dashboard'))
flash("Invalid username or password")
return render_template('login.html', form=form, errors=form.errors.items())
答案 0 :(得分:2)
在您的html中添加此代码:
{% for message in get_flashed_messages() %}
<div class=flash>{{ message }}</div>
{% endfor %}
这是你的py:
from flask import flash
而不是
return "<h1>...
把这个:
flash("some text to flash")