Как кэшировать объект в шаблоне 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 реализовать этот рабочий процесс?