Django 的缓存清除功能对视图缓存不起作用?

Django's cache clear function does not work on view cache?

我正在使用 Django 1.10 的视图缓存。但是我在清除缓存时遇到问题。

@cache_page(60 * 30, cache="container_table")
def container_table(request, dataset):
    # determine container_list by a query to the database
    return render(request, 'container_table.html',{"container_list":container_list})

然后 container_table.html 创建一个涉及 container_list 的 table,每一行都有一个 container_list 元素和一点点 checkbox。当 checkboxchecked 时,我希望清除缓存。因此,基本上当复选框被选中时,会对执行 caches["container_table"].clear() 的视图进行 ajax 调用。

从 django 文档中,这应该清除该缓存中的所有键,但它不起作用,因为当我刷新 container_table.html 的页面时它仍在使用缓存。我误解了 caches["container_table"].clear() 的用法吗?

我以为它会清除一切!

cache_page 装饰器在视图代码 运行 之后将结果插入缓存。因此,尽管我在执行视图的过程中清除了缓存,cache_page 装饰器会在之后立即向缓存中插入一些内容,之后查看缓存的任何代码都至少会在其中看到一个缓存值。

我没有使用视图缓存,而是使用了模板缓存,而且效果很好。此外,使用 make_template_fragment_key 可以更容易地查明用于模板片段的密钥。因此,我不必删除缓存中的所有键,只需删除用于该片段的特定键