我想将comment
文本字段中的每个主题标签转换为网址,以便它可以点击。
例如,用户提交,
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}来点击所有主题标签。
我尝试了下面的templatetags代码,但它不会返回带有文本的主题标签。它只会返回这个,
<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}}
我错过了什么?
答案 0 :(得分:2)
您需要使用mark_safe
将返回值标记为html。请注意,由于您将其标记为安全,因此您必须先escape。 re.sub()
正是您所寻找的:
[Unit]
Description=Spark Worker
After=network.target
OnFailure=plab-service-alarm@.service
[Service]
Type=forking
ExecStart=/opt/sparkassandra/spark/sbin/start-slave.sh spark://the_master_IP:7077
ExecStop=/opt/sparkassandra/spark/sbin/stop-slave.sh
StandardOutput=journal
StandardError=journal
LimitNOFILE=infinity
LimitMEMLOCK=infinity
LimitNPROC=infinity
LimitAS=infinity
CPUAccounting=true
CPUShares=100
Restart=always
[Install]
WantedBy=multi-user.target
注意:我们假设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
),不需要转义。要创建指向其他文本片段的链接,请使用format_html()
代替\w+