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())