刷新页面上的图像,而无需使用Django刷新整个页面

时间:2014-10-02 16:17:47

标签: python html django

我正在制作一个接收图像的应用程序。

我以非常黑客的方式制作它,这就是HTML:

<body onload="javascript:setTimeout('location.reload(true);', 1000);" >
<div class="container">
  <img class="img0" src="{{ uno }}"/>
  <img class="img1" src="{{ dos }}"/>
  <img class="img2" src="{{ tres }}"/>
</div>
</body>

这是views.py

def main(request):
  x = get_newest_pics()

  uno = x[-1]
  dos = x[-2]
  tres = x[-3]

  context = { 'uno' : uno, 'dos' : dos, 'tres' : tres }

  return render(request, 'index.html', context)

我确定有更好的方法可以解决这个问题,但我对Django来说很新,我不知道怎么做。此时,页面只是每秒闪烁显示相同的图像,而实际上我只是想在有新图像时刷新它。有没有办法一致地调用get_newest_pics()并刷新图像,而不是整个页面?或者甚至只是一种让页面停止闪烁的方法?

1 个答案:

答案 0 :(得分:1)

这样做的方法是在前端实现ajax,然后按一定间隔请求新图像,一旦找到新图像,更新显示图像的容器并添加新图像(可用)图像。

请查看django-dajaxice library,以帮助您正确地将前端“接线”到django。

您编写代码的方式,所有三个图像都会立即发送到您的页面,而您的javascript代码段实际上只是快速刷新页面,这就是您看到闪烁效果的原因。

你可以做一个“hack”并为django中的每个图像创建一个单独的视图,然后使用javascript在一个间隔上调用每个视图 - 它将具有相同的最终结果,但在代码方面效率非常低。