Как использовать {% 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' он работает нормально.

Вернуться на верх