Webpy 和 javascript 重新加载内容
Webpy and javascript to reload content
嗨,我是从 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 获得的第一个随机数)。
但是,如果我手动刷新页面,该值会按预期更新。
我不明白问题是出在我的代码中还是出在我对架构的理解上。有人可以帮我吗?
如果我将你的 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/
嗨,我是从 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 获得的第一个随机数)。 但是,如果我手动刷新页面,该值会按预期更新。 我不明白问题是出在我的代码中还是出在我对架构的理解上。有人可以帮我吗?
如果我将你的 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/