Django部分缓存视图

时间:2012-02-20 07:00:05

标签: django caching django-templates

我有一个包含部分的简单页面:

  • 从数据库中获取的项目列表
  • 标题。

标题上有通常的“登录表单”或登录用户的名称。对于所有用户,“items part”是相同的,但是如果我缓存整个视图,则根据用户状态不显示不同的标题(如果您没有登录,则使用您自己的用户名或登录表单)。如何缓存“项目”部分并使标题保持动态?感谢。

2 个答案:

答案 0 :(得分:5)

使用template fragment cache。它允许您仅使用项目列表缓存模板的片段:

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

答案 1 :(得分:3)

如果你正在使用Django的缓存系统和版本1.3,template fragment caching看起来很容易。事实上,文档中给出的版本建议将页面的两个部分缓存为单独的片段,将标题键入登录用户:

{% load cache %}

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

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