Я реализовал многоязычный сайт, использующий перевод wagtail и wagtail-model, но у меня проблема с кэшированием фрагментов шаблона. Кеш работает, но не уважает отдельные языки. Какой бы язык ни был доступен первым после сохранения, он будет использоваться для всех языков. Я пробовал два способа установки ключа кеша безрезультатно. Первый из django документов , второй пытается явно включить код языка в шаблон
Первый:
{% 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)
Это очищает правильный фрагмент независимо от того, не включены ли какие-либо языковые аргументы
Любая помощь будет с благодарностью. Спасибо!