我需要使用查询字符串缓存TemplateView - 如何?

时间:2017-06-28 14:58:43

标签: django caching query-string

基本上,我正在尝试使用以下网址格式缓存一个简单的搜索结果页面(使用TemplateView视图生成):

/搜索/ Q = FOO

我试过了:

  • @cache_page - 不适用于查询字符串(为什么?陈述的原因“querystrings 通常不影响结果”完全取决于'通常'意思'总是',这显然是错误的);
  • django-fancy-cache - 不适用于CBV(但原则上似乎完全符合我的要求);
  • 使用onSubmit()调整我的表单上的操作以更改url模式(以便没有查询字符串) - 由于某些原因,这会弄乱网站上的每个其他页面,即使测试表单不存在于任何页面上那些页面。

我不能成为宇宙中第一个需要这个的人:-) ...指向我在Django文档中遗漏的东西,或指向我的搜索功能的包裹,我非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用template fragment caching来实现此目的,使用查询字符串来唯一标识缓存片段。在您的模板中:

{% load cache %}
{% cache 3600 search_results request.META.QUERY_STRING %}
    <!-- search results here -->
{% endcache %}