热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在搜索结果的对象详情页实现前后链接?

本文探讨了在Django项目中,如何在对象详情页面添加前后导航链接,以提升用户体验。文章详细描述了遇到的问题及解决方案。

我即将完成我的第一个生产就绪的Django项目,但遇到了一个难题:需要在文章详情页面添加前一个和下一个结果的导航链接。当前,我有一个文章搜索视图,可以渲染找到的文章列表,并且分页功能工作正常。点击文章标题后,会打开对象详情页面。然而,我在对象详情页面上无法实现前一个和下一个结果的链接。


我尝试了几种方法来解决类似问题,但都没有成功。例如,使用只包含一篇文章的分页器(paginator),需要知道该文章在结果列表中的索引位置。但如何获取这个索引呢?此外,.get_next_by_foo() 和 .get_previous_by_foo() 方法在这个场景下似乎也不适用。是否有更简单的解决方案?感谢任何帮助!


解决方案


#1: 使用列表索引查找


Django的Paginator处理的是列表,因此可以通过列表索引来解决问题:


['aaa', 'bbb', 'ccc'].index('bbb') # 结果为 1
model = object()
[object(), object(), model].index(model) # 结果为 2

这可以帮助你找到文章在列表中的索引位置。


#2: 使用分页链接


你可以在模板中使用分页对象提供的属性来生成前后链接:


下一页 »
« 上一页

#3: 传递搜索词


要在对象详情页面上显示下一个或上一个结果的链接,你需要从搜索结果中获取下一个条目。为此,你需要执行与搜索页面相同的查询,并应用额外的过滤条件来获取下一个条目。但是,在对象详情页面上,你只有对象ID而没有搜索词。因此,你需要通过某种方式将搜索词传递给对象详情页面。可以通过会话、COOKIE或GET参数来传递搜索词。一旦你在对象详情页面上有搜索词,就可以执行搜索查询并选择下一个和上一个对象。


如果你仍然无法实现,可以展示你的对象详情视图代码,或许有人可以为你编写一些具体的代码。


推荐阅读
author-avatar
韩韩韩韩韩海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有