我正在使用django-haystack,并且尝试实现一种将页码附加到pdf链接的方法,以便在特定页面中打开它。我的目标是在找到第一个匹配项的页面中打开pdf。我知道命中在文档中的位置以及页面更改的位置。例如,我知道第一次点击是从字符2067开始的,第二页是在字符3000处更改的,所以我必须在第二页上打开pdf。
我的问题是:我怎样才能获得该函数的结果,该函数可以找到pdf应该打开并呈现的页面的编号?
我认为结果应该类似于<a href="{% static 'img/sample.pdf#page={{ pageNumber }}' %}">
,但我愿意接受任何其他建议。
P.S。我不是要你解决我的问题。我是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})
在我的html中我添加了
<ul>
{% for element in pos %}
<li>{{ element }}</li>
{% endfor %}
</ul>
仅打印位置并查看一切正常。但是列表为空,这意味着我没有结果。也许有些东西没有按照我认为的方式工作。有什么想法吗?
编辑#2
我认为不可能从荧光笔获取位置,因为我没有实际的荧光笔对象来使用吸气剂获取位置。
还有其他方法可以在荧光笔和视图之间传递参数吗?我设法在我的视图中获取了查询词,但是我没有找到查询词的文本块,也没有全文来再次搜索该位置。另外,我认为当程序扩展时,这种方法会很慢。
答案 0 :(得分:2)
我找到了解决问题的方法,并将其发布在这里,供任何对未来感兴趣的人使用。
因此,我最终使用高亮标签作为参考编写了一个名为findpage
的新模板标签。 here可以找到创建自定义标签所需的所有内容。这样,我可以像这样{% findpage obj.content with query %}
进行调用,并将查询作为参数传递,以便在文本块中找到查询命中的位置。给定分页符和查询命中文档中的位置,我现在可以找到应该打开pdf的确切页面。现在,链接看起来像这样<a href= "{% static "img/sample.pdf#page=" %}{% findpage obj.content with query %}" >
。
我希望这对将来的某人有用。我将尝试回答可能出现的任何问题。
感谢大家的建议。