gpt4 book ai didi

python - Django 将 Haystack 荧光笔结果传递给 View

转载 作者:太空狗 更新时间:2023-10-30 00:12:29 24 4
gpt4 key购买 nike

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

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

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

附言我不是要你解决我的问题。由于我是 django 的新手,我正在寻求建议或建设性的讨论。

提前致谢

编辑

所以在研究了一下之后,我做了以下事情。我发现荧光笔类有一个函数可以找到命中的位置。我在那个类中添加了一个 setter/getter 以获得位置(我稍后会更改它。现在我想看看它是否按照我认为应该的方式工作)。然后在我的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

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

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

最佳答案

我找到了我的问题的解决方案,我将它发布在这里供任何对 future 感兴趣的人使用。

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

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

感谢大家的建议。

关于python - Django 将 Haystack 荧光笔结果传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com