vistas template examples example python django django-templates django-views django-cache

examples - templates django python



¿Cómo puedo renderizar y almacenar en caché una vista programáticamente en Django? (1)

Me tomó un poco de investigación ya que mis habilidades en Django están oxidadas, pero llegué aquí:

from django.middleware.cache import UpdateCacheMiddleware from django.utils.cache import learn_cache_key from django.http import HttpRequest from network.views import StatusView request = HttpRequest() request.META[''SERVER_NAME''] = ''1.0.0.127.in-addr.arpa'' # important request.META[''SERVER_PORT''] = ''8000'' # important request._cache_update_cache = True response = StatusView(request=request).get(request) cacher = UpdateCacheMiddleware() cacher.process_response(request, response).render()

Tengo una vista en Django que es muy lenta de renderizar. Me gustaría mostrar esta vista y almacenarla en caché mediante programación, pero no he descubierto cómo hacerlo. ¿Hay alguna manera simple de invocar mi StatusView y obtener el marcado como una cadena para que pueda almacenarlo en caché?

Aquí está mi vista con el decorador de caché:

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)

A mitad de camino. He logrado renderizar la vista programáticamente. Ahora solo necesito guardarlo en caché.

str(StatusView(request=request).get(request).render())