python - 如何在 Django 中以编程方式呈现和缓存 View ?

标签 python django django-templates django-views django-cache

我在 Django 中有一个 View ,呈现速度非常慢。我想渲染这个 View 并以编程方式缓存它,但还没有弄清楚如何这样做。有什么简单的方法可以简单地调用我的 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)

到一半了。我已经设法以编程方式呈现 View 。现在我只需要缓存它。

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

关于python - 如何在 Django 中以编程方式呈现和缓存 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798426/

相关文章:

python - 操作/重新编码 Pandas 数据框

JAVA_HOME "bug"

python - 当 Django 似乎正在搜索正确的路径时如何解决 'TemplateDoesNotExist' 错误

Python - 使用lxml返回title.text属性的值

python - PySpark 2.x : Programmatically adding Maven JAR Coordinates to Spark

javascript - 如何在不使用 "linebreaksbr"模板过滤器的情况下在 Django 模板中显示换行符?

python - 仅在 Django 管理面板中多选下拉列表/列表

python - 检查模板 Django 中变量中字符串的某些部分

python - 使用 HTML 模板的 Django 表单

javascript - 如何将html循环中的模板变量发送到javascript?