【问题标题】:Why are flash-messages not displayed? [duplicate]为什么不显示闪信? [复制]
【发布时间】:2019-04-16 08:24:01
【问题描述】:

我在 Python 3 中使用 Flask。我创建了一个包含表单的页面。提交表单后,我希望会出现一条消息。但模板不显示。

这很奇怪,因为我按照文档做了所有事情。

我的控制器:

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('Начать')

我的目标:

{% 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

请帮我显示快讯。

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    尝试移动您的 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 %}
    

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2014-01-03
      • 2013-02-28
      • 2019-03-15
      • 1970-01-01
      • 2012-03-17
      相关资源
      最近更新 更多