有没有办法在本地闪烁的 Flask 中使用 Bootstrap toast?
Is there a way to use Bootstrap toast in Flask flashing natively?
我想在 Flask 中使用 flash()
方法显示 toast 消息。我知道 Bootstrap alerts
有效,所以我使用相同的逻辑并将 alerts
的代码替换为 toasts
。但它似乎对我不起作用。
app.py
@app.route('/', methods=['GET', 'POST'])
def home():
if request.method == 'GET':
flash('This is a demo message.')
return render_template('home.html')
flash.html
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto">Message</strong>
<small>11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
{{ message }}
</div>
</div>
</div>
{% endfor %}
{% endif %}
{% endwith %}
base.html
<html>
<head>
...
</head>
<body>
{% include 'flash.html' %}
....
</body>
</html>
home.html
{% extends 'base.html' %}
{% block main %}
...
{% endblock %}
我想知道如何在 Flask 中实现这一点。如果没有,那么我将需要探索 Flask-Toastr(您可以提出替代方案以防万一)
使用 flask 中的 flash 功能绝对可以实现,我不建议使用 Flask-Toastr。
flask 中的 flash 功能可以包装任何 HTML。
您的代码的问题出在您的 bootstrap/html 中,您可以通过删除所有 flash 内容并只拥有:
来测试它
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto">Message</strong>
<small>11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
{{ message }}
</div>
</div>
</div>
您会看到那里也没有显示闪光灯。我怀疑问题是您没有根据需要使用 javascript 初始化吐司。 Bootstrap Toasts 的文档在这里:https://getbootstrap.com/docs/5.0/components/toasts/
我建议让它在普通 HTML 中工作,然后将其包装在闪存中。
我想在 Flask 中使用 flash()
方法显示 toast 消息。我知道 Bootstrap alerts
有效,所以我使用相同的逻辑并将 alerts
的代码替换为 toasts
。但它似乎对我不起作用。
app.py
@app.route('/', methods=['GET', 'POST'])
def home():
if request.method == 'GET':
flash('This is a demo message.')
return render_template('home.html')
flash.html
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto">Message</strong>
<small>11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
{{ message }}
</div>
</div>
</div>
{% endfor %}
{% endif %}
{% endwith %}
base.html
<html>
<head>
...
</head>
<body>
{% include 'flash.html' %}
....
</body>
</html>
home.html
{% extends 'base.html' %}
{% block main %}
...
{% endblock %}
我想知道如何在 Flask 中实现这一点。如果没有,那么我将需要探索 Flask-Toastr(您可以提出替代方案以防万一)
使用 flask 中的 flash 功能绝对可以实现,我不建议使用 Flask-Toastr。
flask 中的 flash 功能可以包装任何 HTML。
您的代码的问题出在您的 bootstrap/html 中,您可以通过删除所有 flash 内容并只拥有:
来测试它<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<strong class="me-auto">Message</strong>
<small>11 mins ago</small>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
{{ message }}
</div>
</div>
</div>
您会看到那里也没有显示闪光灯。我怀疑问题是您没有根据需要使用 javascript 初始化吐司。 Bootstrap Toasts 的文档在这里:https://getbootstrap.com/docs/5.0/components/toasts/
我建议让它在普通 HTML 中工作,然后将其包装在闪存中。