【发布时间】:2015-09-26 14:48:02
【问题描述】:
我在 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())
【问题讨论】:
-
这不就是你用
cache_page装饰器做的吗? -
对不起,我应该更冗长。我有一个后台作业,我想定期调用我的视图并缓存渲染结果。当从浏览器请求时,视图需要很长时间才能呈现,并且内容仅在后台作业运行时才会更改,因此以编程方式生成和缓存它会有所帮助。
标签: python django django-templates django-views django-cache