【问题标题】:how to use {% url %} inside a custom filter in django for displaying a hashtag如何在 django 的自定义过滤器中使用 {% url %} 来显示主题标签
【发布时间】:2021-11-07 09:42:18
【问题描述】:

嗨,我想在帖子内容中在 django 中显示带有 url 的#hashtag。为此,我创建了一个简单的客户过滤器。但是我在使用“url 标签”时遇到了问题。
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>

例如:当有人写“我喜欢#python”时,我想呈现为“我喜欢#python

我的主要问题是这个 {% url %} 在模板标签中不起作用。我该如何实现它谢谢。

【问题讨论】:

  • django 不希望从您调用的函数返回模板标签。根据 django,该行已经被解析。我认为这可能是问题所在。
  • @VishalSingh 谢谢你的回复。我已经解决了。

标签: django django-views django-templates django-template-filters


【解决方案1】:

我自己发现的。我删除了过滤器中的 {% url %} 并使用了 urls.py 中的 url

@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',它只是找到没有主题标签的 'something'。但是使用 '%23' 它工作正常。

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多