0

我希望生成的随机数应该打印在网页上,即HttpResponse(x)每 5 秒后通过,我已经使用了该time.sleep功能。

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

这是我的view.py文件

def main(request):
    return render(request,'graphs/index.html')

def random_generator(request):
    return HttpResponse(randrange(0, 5))

网址.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>
4

2 回答 2

1

您为主页创建一个视图,以及另一个返回随机数的视图。然后你用 javascript 编写一个 ajax 调用来刷新你所看到的。像这样:

视图.py

def main(request):
    return render(request, 'index.html')

def random_generator(request):
    return HttpResponse(randrange(0, 5))

网址.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 编写整个内容。

于 2013-07-26T12:27:59.107 回答
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
于 2013-07-26T12:34:08.327 回答