Как кэшировать объект в шаблоне django и обновлять его, если он был изменен?

У меня есть простое приложение Django с единственным представлением для отображения списка товаров:

from time import sleep
<other imports>

class ProductListView(ListView):
    model = Product
    paginate_by = 50
    allow_empty = True

    def get(self, *args, **kwargs):
        sleep(2)
        return super().get(*args, **kwargs)

А шаблон:

<div class="container">
  {% for product in page_obj %}
    <div class="col-3 my-2">
       <product details>
      </div>
  {% endfor %}
</div>

Я использую sleep(2) для эмуляции медленной загрузки огромного количества объектов из базы данных.

Теперь мне нужно реализовать следующий рабочий процесс:

  • Шаблон из этого представления должен быть кэширован. Таким образом, загрузка первой страницы должна занять >2 секунды, а последующих <2 секунды, загруженных из кэша.
  • .
  • изменение элемента Product в базе данных (например, через страницу администратора)
  • страница при обновлении загружается из кэша, но информация о товаре должна быть обновлена до самой новой

Я изучаю механизм кэширования Django, но не уверен, какой из них мне стоит попробовать. Так возможно ли в Django реализовать этот рабочий процесс?

Вернуться на верх