функция urlize из django.utils.html преобразовывает URL в активируемые по щелчку ссылки. Моя проблема состоит в том, что я хочу добавить цель = "_ пробел" в" <href..>", так, чтобы я открыл эту ссылку на новой вкладке. Есть ли какой-либо способ, которым я могу расширить функцию urlize для получения дополнительного аргумента? или я должен сделать пользовательский фильтр с помощью regexes, чтобы сделать этот материал? Действительно ли это эффективно?
Во встроенном urlize()
нет возможности сделать это. Из-за лицензии Django вы можете скопировать код django.utils.html.urlize
и django.template.defaultfilters.urlize
в свой проект или в отдельное приложение и использовать новые определения вместо них.
Вы не должны добавлять target="_blank"
к вашим ссылкам, это устарело. Пользователи должны сами решать, где они хотят открыть ссылку.
Вы все еще можете открыть ссылку с помощью ненавязчивого JavaScript, например, так (используя jQuery):
$('.container a').click(function(e){e.preventDefault();window.open(this.href);});
Это говорит о том, что вы можете написать свой собственный фильтр, но вам придется скопировать много кода из django.utils.html.urlize
, что не совсем DRY.
Вы можете добавить собственный фильтр, как описано здесь :
Я использовал этот:
def url_target_blank(text):
return text.replace('<a ', '<a target="_blank" ')
url_target_blank = register.filter(url_target_blank, is_safe = True)
Пример использования:
{{ post_body|urlize|url_target_blank }}
У меня работает:)
{{1 }}