2016-11-16 5 views
0

Я выбираю случайный ImageField из базы данных и сохраняю его результат в кеше в течение 10 секунд и отображаю его в одном из моих шаблонов. По какой-то причине через 10 секунд я не вижу другого изображения, которое является моей целью. Я использую memcache.Ошибка отображения изображения кеша Django

Часть моей get_context_data (само, ** kwargs) из класса Based View:

... 
    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

Еще раз, когда я обновляю его, отображается одно и то же изображение. –

Смежные вопросы