Django 分页和“当前页面”

2024-05-01

我目前正在开发一个 Django 应用程序,它将利用臭名昭著的“分页”技术。我试图弄清楚 django.core.paginator 模块是如何工作的。

我有一个带有问题模型的应用程序。我将使用此分页器列出所有问题。每页有 20 个问题。

def show_question(question_pk):
    questions = Question.objects.all()
    paginator = Paginator(questions, 20)
    page      = ... # Somehow figure out which page the question is on
    return render_to_response('show_question.html', { 'page' : page })

在视图中,我将不同的页面列为“... 2, 3,4, 5, 6, ...”我想以某种方式突出显示当前页面,就像许多页面一样。

我确实想知道两件事:

  1. 如何让 Django 找出问题所在的页面?
  2. 我将如何编写模板以正确“突出显示”当前访问的页面?

编辑:抱歉,我忘记了这个问题的一部分。我还希望除当前页面之外的任何页面都可以链接到/questions/{{ that_page.start_index }}。因此基本上每个页面链接都会链接到该页面上的第一个问题。


嗯...我从你的评论中看到你不想执行 ol' GET 参数,这是 django.core.paginator 编写的用途。为了做你想做的事,我想不出比预先计算每个问题所在的页面更好的方法了。例如,您的视图最终将类似于:

ITEMS_PER_PAGE = 20
def show_question(question_pk):
    questions = Question.objects.all()
    for index, question in enumerate(questions):
        question.page = ((index - 1) / ITEMS_PER_PAGE) + 1
    paginator = Paginator(questions, ITEMS_PER_PAGE)
    page = paginator.page(questions.get(pk=question_pk).page)
    return render_to_response('show_question.html', { 'page' : page })

要突出显示模板中的当前页面,您可以执行类似的操作

{% for i in page.paginator.page_range %}
    {% ifequal i page.number %}
        <!-- Do something special for this page -->
    {% else %}
        <!-- All the other pages -->
    {% endifequal %}
{% endfor %}

至于项目,您将有两个不同的 object_lists 可以使用......

page.object_list

将是当前页面中的对象并且

page.paginator.object_list

将是所有对象,无论页面如何。这些项目中的每一个都会有一个“页面”变量,它会告诉您它们位于哪个页面。

总而言之,你所做的事情听起来很不传统。您可能需要重新考虑,但无论如何,祝您好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 分页和“当前页面” 的相关文章

随机推荐

  • 带 webusb 的指纹扫描仪

    可以将 USB 指纹扫描仪与 webusb 连接 配对 https wicg github io webusb https wicg github io webusb 我有数字角色 U are U 4500 想要使用react js 连接到
  • 使用 Codename One 在 WebView 上实现 WebRTC

    我正在开发一个应用程序 我需要使用 Android 的 WebView 包含 WebRTC 根据这篇文章 https developer chrome com multidevice webview overview https devel
  • 使用 JSON 响应

    执行 ajax 请求后 我从服务器收到以下响应 error false success true 我的ajax代码 ajax url update type post data this serialize success function
  • HashSet 是否与 List 相同但具有唯一性?

    我需要有能力在收藏中拥有独特的物品 我打算使用字典 这样我就可以使用 ContainsKey 方法 但我认为这会很浪费 因为我不会使用键 值对的 Value 属性 我遇到了HashSet
  • 如何使表单仅位于应用程序的最顶层?

    我正在制作 Excel 插件 其中单击菜单项或工具栏按钮 打开表单 我已将窗体的最顶层设置为 true 但它仍然是 Windows XP 的所有应用程序的最顶层 我只需要保持 Microsoft Excel 的最高位置即可 我在 Visua
  • 如何在接收端打开没有 SSHD 的 shell?

    我有一台没有 SSHD 的机器 我想从远程机器 我可以完全控制 在这台机器上打开 bash shell 由于我的有限机器上有 SSH 因此我配置了反向代理 ssh R 19999 localhost 22 remoteuser remote
  • Xcode 更改未修改的 Storyboard 和 XIB 文件

    从 git 工作流程的角度来看 当多人协作时 故事板是一种巨大的痛苦 例如 storyboard 文件中的 XML 有其起始位置
  • 如何循环遍历 Windows 窗体窗体中的所有控件或如何查找特定控件是否是容器控件?

    我会告诉我的要求 我需要有一个keydown中每个控件的事件Windows 窗体 http en wikipedia org wiki Windows Forms形式 如果我必须对所有 keydown 事件执行的操作相同 那么最好这样做 而
  • Rails 3.1 资源在服务器重新启动之前无法识别 rmagick 上传的新图像

    我有我的Rails 3 1 0应用程序运行passenger in production环境 我有一个部分 应用程序允许用户更改他的个人资料图片 因此我使用 ajax 上传器上传图像 在我的控制器中 我上传文件并使用 rmagick 为图像
  • Jquery UI 滑块 - 输入值并将滑块移动到位置

    我想知道是否有人找到了实际填充滑块的输入框并使其滑动到适当位置 onBlur 的解决方案或示例 目前 众所周知 它只是用您所在的位置更新此值在 因此 在某些方面 我试图扭转这个令人惊叹的滑块的功能 我找到的一个链接 http www web
  • 如何使 Angularjs 应用程序可抓取

    我使用 Angular js 构建单页应用程序 我的问题是如何使应用程序可爬行 因为路由是在客户端使用 ng view 处理的 而服务器只返回简单的头文件 网站链接 http india elections in http india el
  • 如何更新 Android 上的 Google Analytics 清单?

    我正在尝试禁用 Google Firebase Analytics 的自动屏 幕报告 在里面Firebase 博客文章 https firebase googleblog com 2020 08 google analytics manua
  • 制作波浪动画

    我正在尝试制作音频波动画 这段代码有什么问题 我尝试将翻译更改为比例 但没有成功 有人可以给我一些动画练习的链接吗 webkit box sizing border box box sizing border box webkit pers
  • 调用过程默认值而不将值绑定到 Jdbc 中的参数

    我正在尝试打电话PL SQL为其某些参数定义了默认值的过程 我正在这样做使用CallableStatement in JDBC 该过程有大量已定义默认值的参数 我不想在 Java 代码中显式设置默认值 这样做会使维护代码变得更加困难 如果
  • 当需要切换rootViewController时

    我一直在开发一个 Swift 项目 我有两个视图控制器 登录视图控制器和主页视图控制器 当用户启动应用程序时 如果用户未登录 我想显示登录视图控制器 另一方面 如果用户登录 我想显示主页视图控制器 所以流程会是这样的 当用户未登录时 显示
  • 使用 Networkx (Python) 进行图遍历

    我正在使用 Networkx 来管理依赖关系图 假设我有这个图 每个字母代表一个服务器 gt gt gt G nx Graph gt gt gt G add edge A B gt gt gt G add edge A H gt gt gt
  • Java - oracle.jdbc.dcn.DatabaseChangeEvent - 获取更改的行

    我正在使用 oracle jdbc dcn DatabaseChangeEvent 来从 Oracle DB 获取事件通知 public class TListener implements DatabaseChangeListener p
  • 无法更改 php 会话 cookie 名称

    我将现有且成功运行的站点复制到新的开发服务器 新服务器上的登录现在已损坏 我追踪到虽然会话 cookie 已重命名 ini set session name DOMAIN1 浏览器继续将会话 cookie 存储为 PHPSESSID 当我从
  • grpc找不到protobuf库

    我检查了 grpc 安装并完成了构建和安装 现在当我尝试 find package gRPC CONFIG REQUIRED I get CMake Error at CMakeLists txt 15 find package Found
  • Django 分页和“当前页面”

    我目前正在开发一个 Django 应用程序 它将利用臭名昭著的 分页 技术 我试图弄清楚 django core paginator 模块是如何工作的 我有一个带有问题模型的应用程序 我将使用此分页器列出所有问题 每页有 20 个问题 de