У меня есть вид в Django, который очень медленный для рендеринга. Я хотел бы сделать это представление и кэшировать его программным способом, но не понял, как это сделать. Есть ли простой способ просто вызвать мой StatusView
и получить разметку в виде строки, чтобы я мог ее кэшировать?Как я могу визуализировать и кэшировать представление программно в Django?
Вот мой взгляд с декоратором кэша:
class StatusView(ListView):
template_name = 'network/list.htm'
context_object_name = 'network'
def get_queryset(self):
return Network.objects.filter(date__lte=date.today()).order_by('-id')
def get_context_data(self, **kwargs):
context = super(StatusView, self).get_context_data(**kwargs)
...
...
return context
@method_decorator(cache_page(60 * 1))
def dispatch(self, *args, **kwargs):
return super(StatusView, self).dispatch(*args, **kwargs)
На полпути. Мне удалось отобразить представление программно. Теперь мне просто нужно его кэшировать.
str(StatusView(request=request).get(request).render())
Разве это не то, что вы делаете с 'cache_page' декоратора? –
Извините, я должен был быть более подробным. У меня есть фоновая работа, из которой я хотел бы периодически вызывать мой просмотр и кэшировать полученный результат. Представление занимает очень много времени, когда его запрашивают в браузере, и содержимое изменяется только тогда, когда выполняется фоновое задание, так что генерация и кэширование его программным способом помогут. –