安全过滤带高亮模板标签的django-haystack
我正在使用Django Haystack在我的网站上进行搜索,但我需要过滤掉我的TextField中的所有HTML代码,并使用模板过滤器“safe”来高亮显示搜索结果,以符合搜索标准。
有没有办法做到这一点?我试过
{% highlight result.object.content|safe with query %}
但没有成功。
5 个回答
0
你真正想要的是在HTML文档中突出显示某些词汇。这个问题其实挺复杂的(用安全的方法是没用的)。假设你的内容是:
<h1>my title</h1>
my content
如果用户在搜索框中输入content
,你希望得到的结果大概是这样的:
<h1>my title</h1>
my <em>content</em>
但是等一下,如果用户在搜索框中输入h1
呢?如果你直接应用算法,你可能会得到:
<<em>h1</em>>my title</<em>h1</em>>
my content
所以,为了解决这个问题,突出显示的工具应该:
- 解析HTML。
- 在解析后的文档中进行高亮。
- 打印出文档。
不幸的是,我不知道是否有人为haystack写过这样的高亮工具。不过你可以自己写一个。这里有个说明,教你怎么做:http://django-haystack.readthedocs.org/en/latest/highlighting.html
1
我也遇到过这个问题,解决的方法是使用 with 标签:
{% load highlight %}
{% with obj.text|safe as text %}
{% highlight text with my_query %}
{% endwith %}
这个方法对我有效 :)
2
你可别忘了加载 {% highlight %} 模板标签哦!