我从数据库中选择随机ImageField并将其结果保存在缓存中10秒钟,并将其显示在我的一个模板中。出于某种原因,10秒后我没有看到不同的图像,这是我的目标。我正在使用memcache。
基于类视图的get_context_data(self,** kwargs)的一部分:
...
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 :(得分: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}