为什么不显示闪光消息?

时间:2019-04-16 08:24:02

标签: python flask jinja2

我正在使用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消息。

1 个答案:

答案 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 %}