2013-07-26 74 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