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

Вы создаете вид п или главной страницы, и другое представление, которое возвращает случайное число. Затем вы пишете ajax-вызов в javascript, чтобы обновить то, что видите. Как это:

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

На что посмотреть я могу установить URL в ?? '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

Смежные вопросы