Python 3.x 当前时刻浏览器中的当前时间刷新未更新

Python 3.x 当前时刻浏览器中的当前时间刷新未更新,python-3.x,flask,jinja2,momentjs,Python 3.x,Flask,Jinja2,Momentjs,按照python3.4、jinja2、烧瓶力矩(0.5.1)、烧瓶(0.10.1)集成的基本设置。 我正在尝试简单理解工作原理的能力。 该示例毫无意义,但我想让浏览器显示: 首先,实时的实际时间(“本地时间是…”)不断地实时更新 第二,时间流逝(“那是……”) Jinja2代码: <p>The local time is {{ moment(current_time).format('LT', refresh=True) }}.</p> <p&g

按照python3.4、jinja2、烧瓶力矩(0.5.1)、烧瓶(0.10.1)集成的基本设置。 我正在尝试简单理解工作原理的能力。 该示例毫无意义,但我想让浏览器显示:

  • 首先,实时的实际时间(“本地时间是…”)不断地实时更新
  • 第二,时间流逝(“那是……”)
Jinja2代码:

    <p>The local time is {{ moment(current_time).format('LT', refresh=True) }}.</p>
    <p>That was {{ moment(current_time).fromNow(refresh=True) }}</p>
本地时间是{时刻(当前时间)。格式('LT',refresh=True)}

那是{时刻(当前时间)。从现在开始(刷新=真)}

第二行刷新在浏览器中工作正常(“那是1/2/3分钟前”),表示所有库都正常工作,但第一行刷新不工作

我认为方法矩(current_time).format('LT',refresh=True)会在refresh选项设置为“True”的情况下实时显示时间,但事实并非如此

查看浏览器标记,所有库都在那里,没有错误。请参阅下面的标记。 感谢您的任何提示,或者我误解了您的能力

浏览器来源:

    <div class="container">
        <div class="page-header">
            <h1>Hello, Flask!</h1>
        </div>
    </div>
    <p>The local time is <span class="flask-moment" data-timestamp="2016-01-28T12:19:20Z" data-format="format('LT')" data-refresh="60000" style="display: none">2016-01-28T12:19:20Z</span>.</p>
    <p>That was <span class="flask-moment" data-timestamp="2016-01-28T12:19:20Z" data-format="fromNow(0)" data-refresh="60000" style="display: none">2016-01-28T12:19:20Z</span></p>


   <script src="/static/bootstrap/jquery.min.js?bootstrap=3.3.5.7"></script>
   <script src="/static/bootstrap js/bootstrap.min.js?bootstrap=3.3.5.7"></script>
   <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment-with-locales.min.js"></script>
   <script>
     moment.locale("en");
     function flask_moment_render(elem) {
       $(elem).text(eval('moment("' + $(elem).data('timestamp') + '").' + $(elem).data('format') + ';'));
       $(elem).removeClass('flask-moment').show();
     }
     function flask_moment_render_all() {
       $('.flask-moment').each(function() {
       flask_moment_render(this);
       if ($(this).data('refresh')) {
         (function(elem, interval) { setInterval(function() { flask_moment_render(elem) }, interval); })(this, $(this).data('refresh'));
        }
    })
}
$(document).ready(function() {
    flask_moment_render_all();
});

你好,小瓶子!
当地时间是2016-01-28512:19:20Z

那是2016-01-28 12:19:20Z

地点(“en”); 函数\u矩\u渲染(元素){ $(elem).text(eval('moment('+$(elem).data('timestamp')+'))。+$(elem.data('format')+';')); $(elem).removeClass('flask-moment').show(); } 函数flask\u moment\u render\u all(){ $('.flask moment')。每个(函数(){ 烧瓶、力矩、渲染(本); if($(this).data('refresh')){ (function(elem,interval){setInterval(function(){flask_moment_render(elem)},interval);})(this,$(this).data('refresh'); } }) } $(文档).ready(函数(){ 烧瓶?力矩?渲染?全部(); });

因此,根据文档,refresh=true似乎只会每分钟更新一次。你有没有给它一分钟的时间来确认它没有刷新

渲染的日期和时间可以通过传递 上述任何函数的refresh=True参数。这是 对于相对格式很有用,因为它们会随着时间而更新 通行证。刷新间隔固定为一分钟


因此,根据文档,refresh=true似乎只会每分钟更新一次。你有没有给它一分钟的时间来确认它没有刷新

渲染的日期和时间可以通过传递 上述任何函数的refresh=True参数。这是 对于相对格式很有用,因为它们会随着时间而更新 通行证。刷新间隔固定为一分钟


这是对Flask Moment如何工作的误解,可能是因为我的文档不太清楚

放入Jinja模板中的
瞬间(当前时间).format('LT',refresh=True)
表达式在服务器上运行,而不是在浏览器中运行。特别是,
current\u time
变量有一个固定值,我认为您是在Python代码中指定的

运行此表达式的结果是在浏览器上运行一些Javascript代码。当您通过
refresh=True
时,此Javascript代码每分钟运行一次。但是,虽然代码确实重复运行,但渲染时间始终相同,因为服务器上设置了
current_time
的值,并且没有更新。自动刷新的使用仅适用于moment.js的“动态”渲染选项之一,例如“X秒/分钟前”格式,因为这些选项会随着时间的推移而改变


如果您想实现时钟之类的东西来更新时间,那么您可能需要一个在浏览器上用Javascript实现所有功能的解决方案。

这是对Flask Moment如何工作的误解,可能是因为我的文档不太清楚

放入Jinja模板中的
瞬间(当前时间).format('LT',refresh=True)
表达式在服务器上运行,而不是在浏览器中运行。特别是,
current\u time
变量有一个固定值,我认为您是在Python代码中指定的

运行此表达式的结果是在浏览器上运行一些Javascript代码。当您通过
refresh=True
时,此Javascript代码每分钟运行一次。但是,虽然代码确实重复运行,但渲染时间始终相同,因为服务器上设置了
current_time
的值,并且没有更新。自动刷新的使用仅适用于moment.js的“动态”渲染选项之一,例如“X秒/分钟前”格式,因为这些选项会随着时间的推移而改变


如果您想实现时钟之类的更新时间的功能,那么您可能需要一个在浏览器上用Javascript实现所有功能的解决方案。

Chris-是的,我确实给了它很多时间。jinja脚本中两行的刷新时间相同,第二行按预期更新,但第一行不更新。谢谢。克里斯-是的,我确实花了很多时间。jinja脚本中两行的刷新时间相同,第二行按预期更新,但第一行不更新。谢谢,米盖尔,谢谢你的回复。是的,我现在明白了,并且确实按照你的建议用javascript编写了代码。米格尔,谢谢你的回复。是的,我现在理解了,并且确实按照您的建议用javascript对其进行了回顾性编码。