我需要在RAM中保留一些设置。我创建了文件“cache_values.py”
class CacheValue:
pass
我想将它用作我需要的变量容器。
我正在服务器启动时将一些设置写入“CacheValue”:
from cms.models.pagemodel import Page
from modifier.cache_values import CacheValue
def cache_start_values():
CacheValue.page_publish_dates={}
pages=Page.objects.all()
for page in pages:
CacheValue.page_publish_dates[page.pk]=page.last_publish_date
CacheValue.last_publish_date=max(CacheValue.page_publish_dates.values())
另外,当我保存一些模型时 - 我更改了这些设置
CacheValue.page_publish_dates[self.pk]=self.last_publish_date
CacheValue.last_publish_date=max(CacheValue.page_publish_dates.values())
但是当我想在我的模板中使用这个设置时,通过将它们与上下文处理器一起添加为变量 - 一些魔法就开始了。
from modifier.cache_values import CacheValue
def add_for_cache_info(request):
context_extras = {}
context_extras['page_publish_dates']=CacheValue.page_publish_dates
context_extras['last_publish_date_all_pages']=CacheValue.last_publish_date
if "current_page" in request.__dict__:
context_extras['last_publish_date']=CacheValue.page_publish_dates[request.current_page.pk]
return context_extras
在模板中
{{ page_publish_dates }}
{{ last_publish_date_all_pages }}
每次我引用页面时,我在渲染模板中看到的值在旧模式(模型保存前)和新模式(模型保存模式)之间交替显示。 0_0 0_0
如果我第二次保存模型(更改值) - 它将在最旧值和新值之间进行更改。
为什么呢?
答案 0 :(得分:2)
正在运行多个Django进程,每个进程都有自己的CacheValue
副本,其中一个具有相关值,但大多数没有。请改用Django's cache framework。