2016-11-16 102 views
0

我从数据库中随机选取ImageField并将其结果保存在缓存中10秒,并将其显示在我的一个模板中。出于某种原因10秒后,我没有看到不同的图像,这是我的目标。我正在使用memcache。我基于类视图get_context_data(个体经营,** kwargs)的Django缓存显示图像问题

部分:

... 
    dummy_images = DummyImage.objects.all() 
    dummy_images_counter = DummyImage.objects.all().count() 

    random_image = get_object_or_404(DummyImage, pk=dummy_images[random.randrange(0, dummy_images_counter)].id) 
    cache.set('image', random_image, 10) 
    context = {'width': width, 'height': height, 'img': cache.get('image')} 

模板:

{% load static %} 
<img src="{% static "dummy_images/images/" %}{{ img.image.url }}" width="{{ width }}" height="{{ height }}"> 

我在做什么错?

回答

0

您在每次执行中都设置了cache。在此之前做一次检查。

cached_image = cache.get('image') 
if not cached_image: 
    random_image = get_object_or_404(DummyImage, pk=dummy_images[random.randrange(0, dummy_images_counter)].id) 
    cache.set('image', random_image, 10) 
    cached_image = random_image 
context = {'width': width, 'height': height, 'img': cached_image} 
+0

仍然每当我刷新它显示相同的图片。 –