如何在Django中以编程方式呈现和缓存视图?

2024-10-02 22:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: nameself视图datagetdatereturnrequest
1条回答
网友
1楼 · 发布于 2024-10-02 22:35:19

因为我的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()

相关问题 更多 >