如何在django中缓存查询结果并使用它?

How to cache query results in django and use it?

我有一个小请求,数据从中传输到<select>。我使用分页器,这个选择器每隔 page.So 发出一个请求我想缓存它并尝试每 10 分钟更新一次,因为 example.How 我是否保存缓存以及如何将它传递给模板所以选择器有效吗?

views.py

contractors = Contractors.objects.values_list('name', flat='True')

HTML-代码

<select name="contractorName" class="form-control" id="id_contractorName">
<option value="" selected=""></option>
{% for contractor in contractors %}
<option value="{{ contractor }}">{{ contractor }}</option>
{% endfor %}
 </select>

您可以为此尝试使用 django-cachalot。它缓存服务的数据,并在数据更改时立即使缓存失效。

https://django-cachalot.readthedocs.io/en/latest/index.html

根据 django cache framework,您可以通过多种方式做到这一点。 这是一个关于如何制作 template fragment 缓存的示例:

{% load cache %}

{% cache 600 contractors %}
    <select name="contractorName" class="form-control" id="id_contractorName">
    <option value="" selected=""></option>
    {% for contractor in contractors %}
    <option value="{{ contractor }}">{{ contractor }}</option>
    {% endfor %}
    </select>
{% endcache %}

或者您也可以使用 django 中的 low level caching API

from django.core.cache import cache

...

contractors = cache.get('contractors')
if not contractors:
     contractors = list(Contractors.objects.values_list('name', flat='True'))
     cache.set('contractors', contractors, 600)