gpt4 book ai didi

仅在输入单击时不显示 Python flask 闪存消息

转载 作者:行者123 更新时间:2023-12-03 17:00:07 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why not generate the secret key every time Flask starts?

(1 个回答)


3年前关闭。




我有一个简单的网站,用户可以在其中输入电子邮件。如果输入了电子邮件,则会显示一条闪烁消息。

如果表单是通过在提交按钮上单击鼠标来提交的,则它可以正常工作。

如果表单是通过键盘提交的,请按“输入”,则不会显示 Flash 消息。

在这两种情况下,表单都会成功提交并向数据库添加一个条目。

这是我的第二个项目,我从未观察到这种行为,可能我从未注意到它,现在将到处检查。

这就是我显示闪光灯的方式:

{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="flashes col-xs-12">
{% for message in messages %}
<p>{{ message }}</p>
{% endfor %}
</div>
{% endif %}
{% endwith %}

编码:
@app.route('/', methods=["GET","POST"])
def index():
form = NewsletterForm()

if form.validate_on_submit():
newsletter_user = NewsletterUser(email=form.email.data.lower().strip())
try:
if newsletter_user:
db_session.add(newsletter_user)
db_session.commit()
flash('Danke, wir melden uns bei Ihnen')
return redirect(url_for("index"))
else:
flash('Email konnte nicht eingetragen werden')
return redirect(url_for("index"))
except IntegrityError:
flash('Email wurde bereits eingetragen')
return redirect(url_for("index"))

return render_template('index.html', form = form)

这是 HTML 中的部分(我将 flash 消息移到按钮下):
<div class="bg-image" alt="Baubedarf">

<div class="index-container">

<h1> Baubedarf finden. Bautechnik entdecken </h1>
<p class="under-h1 hidden-xs hidden-sm"> Das Branchenverzeichnis für die Bauindustrie und Zulieferer </p>

<div class="newsletter-form col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3">

<form class="" method="POST" action="{{ url_for('index') }}">
{{ form.csrf_token }}

<h2> Werden Sie bereits von all Ihren potenziellen Kunden gefunden? </h2>

<p class="hidden-xs"> Wenn nicht, dann bieten wir genau das richtige. Sichern Sie sich 6 Monate kostenlos alle Vorteile einer Premium Mitgliedschaft. Melden Sie sich direkt an! </p>

{{ form.email(class="form-control", placeholder="Email") }}

<button type="submit" class="btn"> Eintragen </button>

<img alt="Banner" class="banner-index hidden-xs" src="../static/img/banner-index.png">

{% if form.email.errors %}
{% for error in form.email.errors %}
<p class="flashes-error-form"> {{ error }}</p>
{% endfor %}
{% endif %}

{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="flashes col-xs-12">
{% for message in messages %}
<p>{{ message }}</p>
{% endfor %}
</div>
{% endif %}
{% endwith %}

</form>
</div>

</div>

</div>

下面是 Flash 消息的 CSS 样式:
.index-container .flashes {
color: white;
text-align: center;
font-size: 20px;
}

编辑

我现在创建了一个新站点,该站点应在成功添加电子邮件时显示,但似乎返回重定向不起作用,这可能是 flash 消息不起作用的原因(尽管有时它也起作用)。

代码尽可能简单......我仍然不知道是什么导致了这个问题,因为每封电子邮件都已成功添加到数据库中。

我如何在这个问题上创建赏金?这是我遇到的最奇怪的事情。

新零件,还是同样的问题:
 try:
db_session.add(newsletter_user)
db_session.commit()
flash('Danke, wir melden uns bei Ihnen')
return redirect(url_for("newsletter_success"))
except IntegrityError:
flash('Email wurde bereits eingetragen')
return redirect(url_for("index"))
except InvalidRequestError as e:
print e
flash('Email wurde bereits eingetragen')
return redirect(url_for("index"))

最佳答案

好的,问题是 SECRET_KEY为 session 。

我忘记改了。它是:

SECRET_KEY = os.urandom(24)

解决方案:
SECRET_KEY = "something complex generated by maybe os.urandom"

关于仅在输入单击时不显示 Python flask 闪存消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com