Динамически заменить все URL на полный абсолютный URL в шаблоне - PullRequest
0 голосов
/ 23 января 2019

У меня есть шаблон, который я собираюсь отправить по электронной почте.
Таким образом, мне нужно иметь абсолютные полные URL-адреса (вместе с протоколом и доменным именем) вместо относительных.

Содержимое вписьмо будет поступать динамически из базы данных (введено с использованием ckeditor, поэтому я НЕ МОГУ сделать что-то вроде {{protocol}} {{domain_name}} {% static ''%}. Это будет работать только длястатические файлы. Однако медиа-контент, загруженный через ckeditor, будет записан в медиа-файлах, и я абсолютно не могу его контролировать.

Также я не могу использовать javascript, так как это шаблон электронной почты.

В настоящее время ясоздали функцию python, которая сканирует весь шаблон после рендеринга и добавляет протокол и имя домена к каждому атрибуту src в теге img и всем атрибутам href .

Я хотел бы знать, существует ли какой-нибудь лучший способ

1 Ответ

0 голосов
/ 23 января 2019

Вы можете использовать request.build_absolute_uri и создать пользовательский тег шаблона для использования при рендеринге вашего почтового шаблона.

Пример

#templatetags/url_helper.py
@register.simple_tag()
def full_uri(request, relative_url):
    return request.build_absolute_uri(realtive_url)

Тогда ...

{# Some template.html #}
{% full_uri request some_img.url as full_img_url %}

<img src={{ full_img_url }} />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...