Как использовать {% url %} внутри пользовательского фильтра в django для отображения хэштега
Здравствуйте, я хочу отображать #hashtag с url в django в содержимом поста. для этого я создал простой фильтр клиентов. но у меня проблема с использованием "url tag".
.
tag_name.py:
@register.filter(name='mention',is_safe=True)
@stringfilter
def mention(value):
res = ""
my_list = value.split()
for i in my_list:
if i[0] == '#':
if len(i[1:]) > 1:
<!-- my problem is here -->
i = f"<a href="{% url 'recommendation_posts' %}?q={i}&submit=Search">i</a>"
res = res + i + ' '
return res
html:
<p> {{ post.content|mention|safe }}</p>
например: когда кто-то пишет "I like #python", я хочу, чтобы это отображалось как "I like #python"
Моя главная проблема в том, что {% url %} не работает внутри templatetags. Как я могу добиться этого, спасибо.
Я только что нашел это сам. Я удалил {% url %} внутри фильтра и использовал url из urls.py
@register.filter(name='mention',is_safe=True)
@stringfilter
def mention(value):
res = ""
my_list = value.split()
for i in my_list:
if i[0] == '#':
if len(i[1:]) > 1:
i = f'<a href="/recommendation/?q=%23{i[1:]}&submit=Search">{i}</a>'
res = res + i + ' '
return res
'%23' используется для отображения хэштега в форме поиска. По какой-то причине, если я использую 'q=#something&submit=Search', он просто находит "что-то" без хэштега, но с '%23' он работает нормально.