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
モデル (値の変更) を 2 回目に保存すると、最も古い値と新しい値が交互に表示されます。
なんで?