我希望生成的随机数应该打印在网页上,即每5秒后通过HttpResponse(x)
打印一次,我已使用time.sleep
功能。
如何在不刷新页面的情况下打印随机生成的值?
这是我的 view.py 文件
def main(request):
return render(request,'graphs/index.html')
def random_generator(request):
return HttpResponse(randrange(0, 5))
Urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
url(r'random/','apps.graph.views.main', name = 'graph_home'),
url(r'random_gen/','apps.graph.views.random_generator', name = 'random'),
)
模板
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function refreshRandom() {
$.ajax({
url: 'random/',
dataType: 'html',
success: function(data) {
$('#random').html(data);
},
complete: function() {
window.setTimeout(refreshRandom, 5000);
}
});
}
window.setTimeout(refreshRandom, 5000);
</script>
</head>
<body>
<div id='random'></div>
</body>
</html>
答案 0 :(得分:1)
您可以为主页面创建一个视图,并为另一个返回随机数的视图创建视图。然后你用javascript写一个ajax调用来刷新你看到的内容。像这样:
views.py
def main(request):
return render(request, 'index.html')
def random_generator(request):
return HttpResponse(randrange(0, 5))
urls.py
url('^main/$', 'myapp.views.main'),
url('^random/$', 'myapp.views.random_generator')
然后在你的模板中:
<script type="text/javascript">
function refreshRandom() {
$.ajax({
url: '/random/',
dataType: 'html',
success: function(data) {
$('#random').html(data);
},
complete: function() {
window.setTimeout(refreshRandom, 5000);
}
});
}
window.setTimeout(refreshRandom, 5000);
</script>
<div id='random'></div>
虽然我不知道通过django视图做到这一点你会得到什么。如果这就是你想要做的,你可能想尝试用javascript在客户端编写整个东西。
答案 1 :(得分:0)
你可以使用纯JS来实现它,不需要打扰Django:
var random_interval = setInterval(function() {
var random_number = 1 + Math.floor(Math.random() * 6);
$('#random-number').text(random_number);
}, 5000); // every 5 second