расширение urlize в django

функция urlize из django.utils.html преобразовывает URL в активируемые по щелчку ссылки. Моя проблема состоит в том, что я хочу добавить цель = "_ пробел" в" <href..>", так, чтобы я открыл эту ссылку на новой вкладке. Есть ли какой-либо способ, которым я могу расширить функцию urlize для получения дополнительного аргумента? или я должен сделать пользовательский фильтр с помощью regexes, чтобы сделать этот материал? Действительно ли это эффективно?

31
задан hymloth 19 February 2010 в 10:58
поделиться

3 ответа

Во встроенном urlize() нет возможности сделать это. Из-за лицензии Django вы можете скопировать код django.utils.html.urlize и django.template.defaultfilters.urlize в свой проект или в отдельное приложение и использовать новые определения вместо них.

4
ответ дан 27 November 2019 в 21:53
поделиться

Вы не должны добавлять target="_blank" к вашим ссылкам, это устарело. Пользователи должны сами решать, где они хотят открыть ссылку.

Вы все еще можете открыть ссылку с помощью ненавязчивого JavaScript, например, так (используя jQuery):

$('.container a').click(function(e){e.preventDefault();window.open(this.href);});

Это говорит о том, что вы можете написать свой собственный фильтр, но вам придется скопировать много кода из django.utils.html.urlize, что не совсем DRY.

-3
ответ дан 27 November 2019 в 21:53
поделиться

Вы можете добавить собственный фильтр, как описано здесь :

Я использовал этот:

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 }}
59
ответ дан 27 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: