我正在使用Python中的Flask处理Web应用程序。
我的应用程序中有一个小函数,它在后台计算一些值,并通过闪烁的消息在网页上显示结果。
一切都在显示并正常工作,但需要重新加载页面才能获得闪烁的消息。
我想在不重新加载页面的情况下显示消息。
我听说我可以用js做到这一点,但我不熟悉js。
如果您有任何想法或建议,我将不胜感激。
我的代码可以更好地描绘我正在做的事情。
这是我的应用与主html文件之间的渲染器
{% macro render_field(field) %}
<dt> {{ field.label }}
<dd> {{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
&#13;
这是我要显示闪烁消息的html文件:
<div class="container-fluid" style="min-height:100%">
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{message}}
</div>
{% endfor %}
{% endif %}
{% endwith %}
</div>
&#13;
答案 0 :(得分:1)
如果没有重新加载页面,这是不可能的。你必须在javascript中执行此操作。我建议使用display: none
和display: block
进行CSS样式设置。这是一个例子。
1)Python代码,应该放在app.py
或flask.py
文件中。
app.route('/flash/<message>')
def flash(message):
return render_template('flash.html', msg=message)
这将呈现名为flash.html
的HTML页面。传入的URL还会有另一个参数<message>
这是将闪烁的消息。像这样的网址localhost:80/flash/Hello%20World!
会闪现消息“Hello World!”在你的屏幕上。
还有另一种传递消息的方法,这就是参数。代码是这样的。
app.route('/flash')
def flash():
message = request.args.get("msg")
return render_template("flash.html", ,msg=message)
这使用了flask的请求参数。所以像这样的网址localhost:80/flash?msg=Hello%20World!
会给出一条闪烁的消息,上面写着“Hello World!”。如果要使用此方法,请确保在import语句中包含import语句from flask import request
。
2)Html代码,这是一个名为flash.html
的单独文件,位于您的templates文件夹中。
<body>
<h1 id="header">{{ message }}</h1>
<script>
var heading = $("#header");
setInterval(function() {
if (heading.style.display == "block") { heading.style.display = "none"; }
else if (heading.style.display == "none") { heading.style.display = "block"; }
}, 1000);
</script>
</body>
setInterval中的1000
是毫秒。因此标题将每2秒闪烁。
答案 1 :(得分:1)
您可能需要考虑使用Toastr。我使用Flask的Flash功能遇到了同样的障碍,而Toastr则是纯粹的JS。您可以像代码中的控制台日志行一样使用它
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'