Джанго сокращает слова и показывает искомое слово - PullRequest
2 голосов
/ 08 марта 2019

У меня есть переменная sentences содержит:

"Сканер Пейдж начал исследовать сеть в марте 1996 года, и единственной отправной точкой стала собственная домашняя страница Стэнфорда Пейджа. Чтобы преобразовать данные обратных ссылок, которые он собрал для данной веб-страницы, в меру важности, Брин и Пейдж разработал алгоритм PageRank. Анализируя выходные данные BackRub, которые для заданного URL-адреса состояли из списка обратных ссылок, ранжированных по важности, пара поняла, что поисковая система, основанная на PageRank, будет давать лучшие результаты, чем существующие методы (существующие поисковые системы в то время по существу ранжировал результаты в зависимости от того, сколько раз поисковый запрос появлялся на странице). "

Затем я использую усеченные слова в Django HTML, чтобы сократить представление предложений.

{{ sentences|truncatewords:30 }}

Итак, результат показывает это:

"Сканер Пейдж начал исследовать сеть в марте 1996 года, и единственной отправной точкой стала собственная домашняя страница Пейджа в Стэнфорде. Для преобразования данных обратной ссылки в нее ..."

На самом деле, я хочу показать результат truncatewords с определенным словом, например, "BackRub", поэтому результат должен быть:

"Анализируя выходные данные BackRub, которые для данного URL-адреса состояли из списка обратных ссылок, ранжированных по важности, пара поняла, что поисковая система, основанная на PageRank, выдаст ..."

Есть ли какие-нибудь решения?

Спасибо

1 Ответ

2 голосов
/ 08 марта 2019

Я думаю, вам следует написать собственный тег шаблона , чтобы решить эту проблему.

Вы можете получить начало предложения, которое содержит определенное слово и строку возврата, начинающуюся оттуда. Затем вы можете усечь результат, как вы сделали выше. Я считаю, что это не лучшее решение. Но я думаю, с этого можно начать. Смотрите код и результаты ниже:

где-то в шаблонах

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 }}

Вот результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...