2013-07-26 72 views
0

我希望生成的随机数应打印在网页上,即通过HttpResponse(x)每隔5秒后打印一次,对此我已使用time.sleep函数。Django随机值打印

如何在不刷新页面的情况下打印随机生成的值?

这里是我的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> 

回答

1

您创建一个视图˚F或主页面,以及另一个视图返回一个随机数。然后你用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来尝试在客户端编写整个事情。

+0

要哪个视图设置我的网址?? 'index'视图还是'random_generator'视图? – PythonEnthusiast

+0

目前它是'url(r'home /','apps.graph.views.WHICH VIEW'),' – PythonEnthusiast

+0

'url(r'random /','apps.graph.views.random_generator')' –

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 
+0

那么,根据我的问题,它需要从后端获取值。这只是一个示例问题。不管怎么说,多谢拉 !!! – PythonEnthusiast

+0

那么我正在编辑我的问题。请根据以下情况进行审查和纠正。谢谢 – PythonEnthusiast