【问题标题】:flash message doesn't show up闪信不显示
【发布时间】:2021-01-04 21:00:31
【问题描述】:

我的表单验证代码需要 Flash 消息,但是它没有显示在我的 Chrome 中(版本:85.0.4183.102 - 64bit):

我的其他环境信息如下:

Python 3.8.5 烧瓶 1.1.2 Werkzeug 1.0.1 引导程序 4.5.2

这里是webpage.py代码块:

@app.route("/register", methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        flash(f'Account created for {form.username.data}!', 'success')
        return redirect(url_for('home'))
    return render_template('register.html', title='Register', form=form)


@app.route("/login", methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        if form.email.data == 'test@test.com' and form.password.data == 'test':
            flash('You have been logged in!', 'success')
            return redirect(url_for('home'))
        else:
            flash('Login Unseccessful. Please check username and password', 'danger')
    return render_template('login.html', title='Login', form=form)

这是 layout.html 代码块:

{% with message = get_flashed_messages(with_categories=true) %}
    {% if messages %}
        {% for category, message in messages %}
            <div class="alert alert-{{ category }}">
                {{ message }}
            </div>
        {% endfor %}
    {% endif %}
{% endwith %}

【问题讨论】:

  • 这之前和之后的 HTML 是什么?这需要在页面的 中才能显示...
  • 是的,它在 标签内。
  • 分享更多模板的HTML?
  • 查看我的答案,有任何问题欢迎提问

标签: python flask bootstrap-4


【解决方案1】:

试试看,然后告诉我。

这是你的:

{% with message = get_flashed_messages(with_categories=true) %}
    {% if messages %}
        {% for category, message in messages %}
            <div class="alert alert-{{ category }}">
                {{ message }}
            </div>
        {% endfor %}
    {% endif %}
{% endwith %}

改用这个


{% with messages = get_flashed_messages(with_categories=true) %}
    {% if messages %}
        {% for category, message in messages %}
            <div class="alert alert-{{ category }}">
                {{ message }}
            </div>
        {% endfor %}
    {% endif %}
{% endwith %}

如果不起作用,请尝试像这样的更简单的版本(这应该 100% 起作用)如果这个问题存在于您如何在 HTML 中实现 get_flashed_messages 的某个地方:

{% for msg in get_flashed_messages() %}

    <div class="alert alert-dangerous">
         {{ msg }}
    </div>

{% endfor %}

更新

我还在 login() 中发现了一个小错误:

@app.route("/login", methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        if form.email.data == 'test@test.com' and form.password.data == 'test':
            flash('You have been logged in!', 'success')
            return redirect(url_for('home'))
        else:
            flash('Login Unseccessful. Please check username and password', 'danger')
            return redirect(url_for('home'))
    return render_template('login.html', title='Login', form=form)

在 else 语句后添加 return redirect(url_for('home')) 否则那个闪光灯永远不会出现

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多