Django部分缓存视图

4
我有一个简单的页面,包含以下部分:
  • 从数据库中获取的项目列表
  • 一个头部
在头部上有通常的“登录表单”或已登录用户的名称。对于所有用户,“项目列表”部分相同,但如果我缓存整个视图,则不会根据用户状态显示不同的头部(您自己的用户名或未登录时的登录表单)。如何缓存“项目列表”部分并保留头部的动态性?谢谢。
2个回答

5

使用模板片段缓存。它可以让你仅缓存模板中与项目列表相关的片段:

{% load cache %}
 A header here
{% cache 500  %}
   List of items here
{% endcache %}

谢谢,这个按预期工作。我如何强制使其过期?就像这样http://stackoverflow.com/questions/9350794/django-caching-purge-cache但基于片段? - pistacchio

3
如果您正在使用Django的缓存系统和1.3版本,那么使用模板片段缓存非常容易。实际上,在文档中给出的版本建议将页面的两个部分作为单独的片段进行缓存,并将标题与登录用户关联起来。
{% load cache %}

{% cache 500 header request.user.username %}
    .. header ..
{% endcache %}

{% cache 500 items %}
    .. items ..
{% endcache %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接