gpt4 book ai didi

python - 使用 Templatetags 使模板中的所有主题标签均可点击

转载 作者:行者123 更新时间:2023-12-01 03:19:08 26 4
gpt4 key购买 nike

我想将 comment 文本字段中的每个主题标签转换为 url,以便可以点击。

例如,用户提交,

s = "I can't get enough of #SO because #developers are very #supportive"

我希望它在模板中像这样返回,

I can't get enough of #SO because #developers are very #supportive

将显示整个文本,并且通过嵌入 {hashtag} 可以点击所有主题标签。

我尝试了下面的模板标签代码,但它不会返回带有文本的主题标签。它只会返回这个,

<a href='http://example.com/tags/SO'>SO</a> 

app_extras.py

import re

register = template.Library()

@register.filter(name='hashchange')
def hashchange(value):
vx=re.findall(r"#(\w+)", value)
for n in vx:
pm="<a href='http://example.com/tags/{0}'>{0}</a>".format(n)
return pm

在模板中,我做到了,

{{object.comment|safe|hashchange}}

我错过了什么?

最佳答案

您将需要使用mark_safe将您的返回值标记为 html。请记住,由于您将其标记为安全,因此您必须 escape首先。 re.sub()是您正在寻找的:

import re
from django import template
from django.utils.html import escape
from django.utils.safestring import mark_safe

register = template.Library()

def create_hashtag_link(tag):
url = "/tags/{}/".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)),
escape(value)))

注意:我们假设 value 是文本(未转义),并且 create_hashtag_link(tag) 假设 tag 是一个单词 (\w+) 并且不需要转义。要创建指向其他文本片段的链接,请使用 format_html()而不是 .format()

关于python - 使用 Templatetags 使模板中的所有主题标签均可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42137455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com