Переопределение существующих пользовательских тегов шаблона Django App
У меня есть приложение, которое использует Weblate для управления переводами. Я использую weblate/weblate
образ Docker, а мои собственные настройки построены как отдельный пакет Python, расширяющий этот образ и построенный поверх него. Проблема в том, что в HTML-шаблонах Weblate есть тег шаблона icon
, который должен загружать SVG-иконки из STATIC_ROOT
или CACHE_DIR
- но мое приложение работает в бессерверной конфигурации и поэтому выгружает все статические ресурсы в ведро S3. Для большинства ресурсов это работает нормально, но из-за логики тега шаблона иконки не загружаются, и я получаю такие сообщения об ошибках -
weblate-1 | gunicorn stderr | [2025-01-21 12:41:08,913: WARNING/1540] Could not load icon: FileNotFoundError: [Errno 2] No such file or directory: '/app/cache/static/icons/weblate.svg'
weblate-1 | gunicorn stderr | [2025-01-21 12:41:08,918: WARNING/1540] Could not load icon: FileNotFoundError: [Errno 2] No such file or directory: '/app/cache/static/icons/wrench.svg'
weblate-1 | gunicorn stderr | [2025-01-21 12:41:08,919: WARNING/1540] Could not load icon: FileNotFoundError: [Errno 2] No such file or directory: '/app/cache/static/icons/plus.svg'
weblate-1 | gunicorn stderr | [2025-01-21 12:41:08,923: WARNING/1540] Could not load icon: FileNotFoundError: [Errno 2] No such file or directory: '/app/cache/static/icons/dots.svg'
Я написал свой собственный тег шаблона, который я поместил в свой пользовательский модуль weblate_customization/templatetags/icon.py
, но он не переопределяет логику загрузки иконок по умолчанию в weblate, и я не могу получить доступ к шаблонам по умолчанию в своем коде, если только я не сделаю «обезьяний патч». Код для тега шаблона иконки по умолчанию существует в приложении weblate.utils
, которое включено в базовое изображение и загружает всю функциональность, необходимую приложению для работы, поэтому я не могу просто выбросить его. Есть ли способ заставить Django загружать мою собственную версию этого тега шаблона, а не ту, которую предоставляет weblate
?