Django将Haystack荧光笔结果传递给视图

mnm*_*mbs 6 python django django-haystack

我正在使用django-haystack,并且尝试实现一种将页码附加到pdf链接的方法,以便在特定页面中打开它。我的目标是在找到第一个匹配项的页面中打开pdf。我知道命中在文档中的位置以及页面更改的位置。例如,我知道第一个命中从字符2067开始,第二页在字符3000处更改,因此我必须在第二页打开pdf。

我的问题是:我怎样才能得到该函数的结果,该函数可以找到应打开pdf并呈现它的页面的编号?

我认为结果应该是这样,<a href="{% static 'img/sample.pdf#page={{ pageNumber }}' %}">但我愿意接受任何其他建议。

附言:我不是要您解决我的问题。我想提出建议或进行有建设性的讨论,因为我是django的新手。

先感谢您

编辑

因此,经过研究,我做了以下工作。我发现荧光笔类具有查找匹配位置的功能。我在该类中添加了一个吸气剂以获得位置(我将在以后进行更改。现在,我想看看它是否按照我认为的方式工作)。然后在我的views.py文件中添加以下内容

from django.shortcuts import render
from haystack.utils.highlighting import Highlighter


def getPage(request):
        pos = Highlighter.getPos()
        print (pos)
        return render(request, 'search/_result_object.html', {'pos': pos})
Run Code Online (Sandbox Code Playgroud)

在我的html中我添加了这个

<ul>
    {% for element in pos %}
        <li>{{ element }}</li>
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

只是打印位置,看看一切正常。但是列表为空,这意味着我没有结果。也许有些东西没有按照我认为的方式工作。有任何想法吗?

编辑#2

我认为不可能从荧光笔获取位置,因为我没有实际的荧光笔对象来使用吸气剂获取位置。

还有其他方法可以在荧光笔和视图之间传递参数吗?我设法在我的视图中获取了查询词,但是我没有找到查询词的文本块,也没有全文来再次搜索该位置。另外,我认为当程序扩展时,这种方法会很慢。

mnm*_*mbs 2

我找到了解决我的问题的方法,并将其发布在这里,供对未来感兴趣的任何人使用。

因此,我最终编写了一个新的模板标签,称为findpage使用突出显示标签作为参考。创建自定义标签所需的一切都可以在这里找到。这样我就可以像这样调用它{% findpage obj.content with query %}并将查询作为参数传递,以便在文本块中找到查询命中的位置。考虑到文档中的分页符和查询命中的位置,我现在可以找到应该打开 pdf 的确切页面。该链接现在看起来像这样<a href= "{% static "img/sample.pdf#page=" %}{% findpage obj.content with query %}" >

我希望这对将来的人有用。我将尽力回答可能出现的任何问题。

感谢大家的建议。