我正在制作一个接收图像的应用程序。
我以非常黑客的方式制作它,这就是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()并刷新图像,而不是整个页面?或者甚至只是一种让页面停止闪烁的方法?
答案 0 :(得分:1)
这样做的方法是在前端实现ajax,然后按一定间隔请求新图像,一旦找到新图像,更新显示图像的容器并添加新图像(可用)图像。
请查看django-dajaxice
library,以帮助您正确地将前端“接线”到django。
您编写代码的方式,所有三个图像都会立即发送到您的页面,而您的javascript代码段实际上只是快速刷新页面,这就是您看到闪烁效果的原因。
你可以做一个“hack”并为django中的每个图像创建一个单独的视图,然后使用javascript在一个间隔上调用每个视图 - 它将具有相同的最终结果,但在代码方面效率非常低。