【发布时间】:2016-06-11 00:39:32
【问题描述】:
我正在创建一个 Django 站点,该站点托管大量冗长的转录辩论。
我有两个主要视图:一个为每个单独的演讲编制索引的 Haystack 搜索视图,一个为每个转录本(包含数百个单独的演讲)编制索引的完整视图。两个视图都使用 django 无休止的分页来显示结果。
我正在尝试在这两个视图之间建立链接,以便可以在其父脚本中的上下文中查看任何搜索结果(语音),并且我希望页面在页面加载时跳转到该语音 ID 的锚点。
我计算单个结果出现的页面并重定向到该 URL,同时将结果的 pk 存储在消息中,以便我可以突出显示结果:
def full_view_redirect(request, year, month, day, pk):
y=str(year)
m=str(month)
d=str(day)
qs = transcripts.objects.filter(speechdate__year=year).filter(
speechdate__month=month).filter(speechdate__day=day).order_by('basepk').all()
firstpk = int(qs[0].basepk)
pageNo = ((int(pk)-firstpk)//15)+1
messages.add_message(request, messages.INFO, pk)
if pageNo == 1:
return redirect("/full/"+y+"/"+m+"/"+d+"/"+"#"+str(pk))
else: ## this doesn't work
return redirect("/full/"+y+"/"+m+"/"+d+"/"+"?page="+str(pageNo)+"#"+str(pk))
我的问题与http://htmlasks.com/how_to_make_this_link_work_page2reviews_reload_the_page_and_jump_to_the_anchor 类似,但此处切换锚点和 ?page 的建议不起作用。
我无法让锚点工作,因此页面在页面加载时跳转到所需的结果。我错过了什么明显的东西吗?
编辑: 我验证了我想跳转到的 div 有一个正确的 id,例如。
<div class="panel panelhighlight" id="54969">
/full/1903/04/29/?page=7#54969 之类的 url 会加载正确的页面,但不会跳转到 div。
像/full/1903/04/29/#54969?page=7 这样的网址会加载第一页而不是第 7 页。
编辑 2:
我已经从 django-endless-pagination 切换到 django-digg-paginator 以便在我的视图中处理分页,而不是在模板级别。
然后,我必须通过省略页码和锚点之间的斜线来确保重新加载重定向。 /full/1903/04/29/7#54969 在加载时成功重新定位页面。
【问题讨论】:
-
究竟是什么不起作用,你的pk页面上是否有一个锚点,以便浏览器知道跳转到哪里?
<a name="{{ pk }}"></a> -
是的,这是我要跳转到的 div 的代码:
{% if result.basepk|stringformat:"s" == refer_pk|stringformat:"s" %} <div class="uk-panel uk-panel-box panelhighlight" id ='{{ refer_pk|stringformat:"s" }}'>在为完整视图结果实现分页之前,我还让 id 锚点工作得很好。
标签: html django pagination