[英]How can I render and cache a view programatically in Django?
我在Django中有一个视图,渲染速度很慢。 我想渲染这个视图并以编程方式缓存它,但还没有弄清楚如何这样做。 有没有简单的方法来简单地调用我的StatusView
并将标记作为字符串,以便我可以缓存它?
这是我对缓存装饰器的看法:
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())
由于我的Django技能生锈,但是我在这里需要一些挖掘工作:
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.