Webpy和javascript重新加载内容

时间:2015-07-27 21:15:31

标签: javascript web.py

您好我是从web.py开始的,还有很多我不理解的东西。 这个真的很烦人。 我尝试使用web.py和javascript做一个简单的页面。 我们的想法是在div上显示一个随机值,该值每秒都由python函数更新。 这是我正在使用的代码:

import web
import random

def rnd():
return random.randint(0, 10)

render = web.template.render('templates', globals={'rndm':rnd})

urls = (
    '/mhs(.*)', 'mhs',    
    '/(.*)', 'index',
    )
app = web.application(urls, globals())

class reloader:
    def GET(self):
        return render.reloader(rnd)

class index:
    def GET(self, name='Bob'):
        return render.index(name)

if __name__ == "__main__":

app = web.application(urls, globals())
app.run()

然后是reloader.html文件:

$def with(rnd)
<!DOCTYPE html>
<html>
<head> 
    <meta charset="utf-8"/>
</head>
<body>
<div id='demo'>Status: ? </div>

<script type="text/javascript">

    function UpdateLeds() {
        var x = document.getElementById('demo');
        x.innerHTML = "Status: $rndm()";
    }

    setInterval(UpdateLeds, 1000);
</script>
</body>
</html>

我希望代码能够显示每秒刷新0到10个随机数的页面。 然而,我所能获得的是一个显示静态值的页面(即:由rnd获得的第一个随机数)。 但是,如果我手动刷新页面,则值会按照我的预期更新。 我无法理解问题是在我的代码中还是在我对架构的理解中。有人能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

如果我将你的javascript功能更改为此功能,它对我有用:

function UpdateLeds() {
    var x = document.getElementById('demo');
    var random = Math.floor((Math.random() * 10) + 1);
    x.innerHTML = "Status: "+random;
}

我不确定您在HTML中使用$ def with(rnd)确实要做什么。我想你可能会混合使用web.py python和javascript语法(只是一个猜测),但是一旦页面在浏览器中呈现,python对你没有任何好处,你必须用纯粹的javascript做你想做的事情

这是一个JSFiddle:https://jsfiddle.net/s7n6nxng/