サイト全体で動的メニューと現在のアプリのリストを生成するために使用するカスタム コンテキスト プロセッサがあります。
from portal.models import *
def base_items(request):
return {
...
'app_items': App.objects.filter(isonline=True),
'menu_items': MainMenu.objects.all().order_by('position'),
}
編集:
私のテンプレート (これらの URL の多くは Django フレームワークの外にあり、言語によって異なることに注意してください。したがって、それらを db フィールドにハードコードする必要があります。
<ul class="menu">
{% for item in menu_items %}
{% if LANGUAGE_CODE = "en-us" %}
<li><a title="{{ item.title_en }}" href="{{ item.url_en }}">{{ item.title_en }}</a>
<ul>
{% for subitem in item.submenu_set.all %}
<li><a title="{{ subitem.title_en }}" href="{{ subitem.url_en }}">{{ subitem.title_en }}</a></li>
{% endfor %}
</ul>
</li>
{% else %}
<li><a title="{{ item.title_es }}" href="{{ item.url_es }}">{{ item.title_es }}</a>
<ul>
{% for subitem in item.submenu_set.all %}
<li><a title="{{ subitem.title_es }}" href="{{ subitem.url_es }}">{{ subitem.title_es }}</a></li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>
私の質問は、あまり頻繁に変更されないこれらの結果をキャッシュするにはどうすればよいですか?
@cache_page デコレーターを試してみましたが、ページがまだメニュー項目オブジェクトのデータベースにアクセスしていることがわかります。
どんな助けでも大歓迎です。