#testing things out <a href="/mention/?user=lol">lol</a>
Разве это не правильно?Ссылка выглядит как желаемый результат?
Если только он не отображает вышеизложенное буквально
Попробуйте вместо этого
def create_hashtag_link(tag):
url = "/hash/?hash={}".format(tag)
# or: url = reverse("hashtag", args=(tag,))
return '<a href="{}">#{}</a>'.format(url, tag)
@register.filter()
def hashtag_links(value):
return mark_safe(
re.sub(r"#(\w+)", lambda m: create_hashtag_link(m.group(1)),
value))
def create_mention_link(mention):
link = "/mention/?user={}".format(mention)
return '<a href="{}">{}</a>'.format(link, mention)
@register.filter()
def mention_link(value):
return mark_safe(
re.sub(r"@(\w+)", lambda x: create_mention_link(x.group(0)),
value))
В основном, escape
делаетследующее ( source )
Возвращает данный текст с амперсандами, кавычками и угловыми скобками, закодированными для использования в HTML.
Я думаю, что однаждывы применяете один из фильтров, так как вы делаете escape(value)
, теперь вы избежали всего содержимого, кроме части, которую вы заменили.Когда вы применяете второй фильтр, этот процесс повторяется, вы заменяете некоторую часть, но нетронутый раздел теперь экранирован.Я подозреваю, что конечный результат (если вы сделали страницу источника) будет выглядеть следующим образом:
<a href="/hash/?hash=testing">#testing</a> things out <a href="/mention/?user=@lol">@lol</a>
Таким образом, хэштег (потому что он был применен последним) в порядке, но ссылка не 'на самом деле рендеринг как HTML.