我正在编写一个自定义模板过滤器,以突出显示在搜索结果页面中输入到搜索引擎中的关键字,就像在Google搜索结果中一样。
自定义过滤器的代码:
register = template.Library()
@register.filter
@stringfilter
def highlight(value, search_term):
return value.replace(search_term, "<span class='highlight'>%s</span>" % search_term)
过滤器不会将目标单词的CSS类更改为<span class='highlight'>
。而是,浏览器中输出的显示文本实际上是<span class='highlight'>word</span>
。例如。 “目前最需要的汽车品牌是<span class='highlight'>Tesla</span>
。”如何使replace()
方法实际更改目标单词的CSS类?
答案 0 :(得分:0)
问题是,当您过滤HTML元素https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/#filters-and-auto-escaping
时,需要自动换景工作代码:
from django import template
from django.utils.safestring import mark_safe
from django.utils.html import conditional_escape
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter(needs_autoescape=True)
@stringfilter
def highlight(value, search_term, autoescape=True):
return mark_safe(value.replace(search_term, "<span class='highlight'>%s</span>" % search_term))