WagtailModelTranslation模板片段缓存

2024-09-28 01:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用wagtail和wagtail modeltranslation实现了一个多语言站点,但是我在模板片段缓存方面遇到了问题。缓存可以工作,但不考虑不同的语言。无论在保存后首先访问哪种语言,都将为所有语言提供服务。我尝试了两种设置缓存键的方法,但都没有效果。首先从django docs开始,然后尝试在模板中显式地包含语言代码

第一:

{% cache 604800 about_copy LANGUAGE_CODE %}
... HTML ...
{% endcache %}

第二:使用简单的模板标记

from django.utils.translation import get_language

@register.simple_tag(takes_context=True)
def get_lang(context, *args, **kwargs):
    return get_language()
{% cache 604800 about_copy get_lang %}
... HTML ...
{% endcache %}

我的保存方法如下:

    def save(self, *args, **kwargs):
        """Create a template fragment key.
        Then delete the key."""

        key = make_template_fragment_key("about_copy")
        cache.delete(key)

        return super().save(*args, **kwargs)

无论是否包含任何与语言相关的参数,这都会清除正确的片段

任何帮助都将不胜感激。谢谢


Tags: django方法key模板语言cachegethtml
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:19

如果LANGUAGE_CODE是在上下文中实际定义的,那么第一种方法应该有效。这不是自动发生的,因此您可能只需要首先set it

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}

{% cache 604800 about_copy LANGUAGE_CODE %}
... HTML ...
{% endcache %}

这里需要注意的是,在Wagtail中使用模板片段缓存时需要小心,因为previewed, non-published content will get cached

相关问题 更多 >

    热门问题