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