Django截断单词并显示搜索的单词

3

我有一个变量sentences,其中包含:

"页面的网络爬虫在1996年3月开始探索互联网,以佩奇(谷歌创始人之一)自己的斯坦福主页作为唯一的起点。为了将其收集到的给定网页的反向链接数据转换为重要性度量,布林和佩奇开发了PageRank算法。他们分析BackRub的输出时(对于给定的URL,该输出由按重要性排名的反向链接列表组成),这对人意识到基于PageRank的搜索引擎将产生比现有技术更好的结果(当时现有的搜索引擎基本上根据搜索词在页面上出现的次数来排名结果)。

随后我使用Django HTML中的truncatewords来缩短句子的视图。

{{ sentences|truncatewords:30 }}

因此,结果显示:

"Page的网络爬虫在1996年3月开始探索网络,Page自己的斯坦福主页是唯一的起点。为了将反向链接数据转换成......"

实际上,我想展示使用特定单词(例如“BackRub”)的truncatewords结果,那么结果应该是:

"分析BackRub的输出时,针对给定URL的列表由重要性排序的后向链接,两人意识到基于PageRank的搜索引擎会产生......"

有解决方案吗?

谢谢

1个回答

2
我认为你应该编写自己的模板标签来解决这个问题。
你可以获取包含特定单词的句子开头,并返回从那里开始的字符串。然后,你可以像上面所做的那样截断结果。我相信这不是最好的解决方案。但我认为这是你可以开始尝试的东西。请参见下面的代码和结果:

在模板标签中的某个地方

import re

from django import template

register = template.Library()


@register.filter
def findsentencebyword(sentence, word):
    matches = re.search("([^.]*?" + word + ".*)", sentence)

    if not matches:
        return sentence

    return matches.group()

最初的回答:然后在模板中按照以下方式加载和使用它
{% load <templatetag> %}

{{ sentences|findsentencebyword:"BackRub"|truncatewords:30 }}

这是结果:

在此输入图像描述

最初的回答:这里是结果。

它可以工作。不幸的是,这个过滤器使页面加载结果变得缓慢。希望有其他替代方案。总的来说,感谢提供这个选项。 - Samudra Ajri Kifli
@SamudraAjriKifli 这是因为正则表达式。 - Davit Tovmasyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接