2012-02-20 52 views
4

我与零件的简单页面:Django的部分缓存的视图

  • 从数据库
  • 头拍摄的内容的列表。

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

回答

5

使用template fragment cache。它可以让你只缓存模板的片段与您的项目清单:

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

谢谢,这按预期工作。我如何强制过期呢?像这样http://stackoverflow.com/questions/9350794/django-caching-purge-cache但基于片段? – pistacchio 2012-02-20 07:25:41

+2

@pistacchio http://djangosnippets.org/snippets/1593/ – DrTyrsa 2012-02-20 07:27:39

+1

谢谢,这工作:) – pistacchio 2012-02-20 13:09:42

3

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

{% load cache %} 

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

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