我正在使用Flask和Python3。我制作了一个包含表单的页面。提交表单后,希望出现一条消息。但是模板不会显示它。
这很奇怪,因为我根据文档进行了所有操作。
我的控制器:
from flask import render_template, flash, redirect
from app import app
from app.forms import SearchForm
@app.route('/')
@app.route('/index', methods=['GET', 'POST'])
def index():
form = SearchForm()
if form.validate_on_submit():
flash('search ok')
return redirect('/index')
return render_template('index.html', title='search', form=form)
我的表单:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired
class SearchForm(FlaskForm):
search = StringField('Поиск по фразам', validators=[DataRequired()])
submit = SubmitField('Начать')
我的tpl:
{% extends "base.html" %}
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<br>
{% block content %}
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
<div>
{{ form.search.label }}<br>
{{ form.search(size=32) }}<br>
{% for error in form.search.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</div>
<div>{{ form.submit() }}</div>
</form>
{% endblock %}
我的存储库是here on GitLab。
请帮助我显示Flash消息。
答案 0 :(得分:0)
尝试移动Flash消息,使它们显示在content
块中,如下所示:
{% extends "base.html" %}
{% block content %}
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<br>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
<div>
{{ form.search.label }}<br>
{{ form.search(size=32) }}<br>
{% for error in form.search.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</div>
<div>{{ form.submit() }}</div>
</form>
{% endblock %}