Python 现代开发学习笔记

15-03 检查分页变化

本章题解 · 全部练习

题目

保留筛选条件切换两页,新增或删除一本后重新读取,说明总数与当前页怎样更新。

推导与做法

分页必须有稳定 order_by。Paginator 从当前筛选的 QuerySet 重新求总数,链接保留 q、finished 和页号。

在读取第二页后新增一本,再次查询会更新总数;删除后再回到原数。原来已经返回给浏览器的页面不是实时视图,需要新请求才能看见变化;不能只修改前端显示的 total。

实现与运行

查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。

在配套目录的 Django/reading_project 中运行。先按项目 README 执行 uv sync --locked。

# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run python "../../学习索引/参考实现/代码/ch15.py" 15-03

程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。

查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
  "before": {
    "total": 6,
    "number": 2,
    "ids": [
      3,
      4
    ],
    "next_query": "q=&finished=all&page=3"
  },
  "after_add": {
    "total": 7,
    "number": 2,
    "ids": [
      3,
      4
    ],
    "next_query": "q=&finished=all&page=3"
  },
  "after_delete": {
    "total": 6,
    "number": 2,
    "ids": [
      3,
      4
    ],
    "next_query": "q=&finished=all&page=3"
  }
}

笔记正文与全部题解 · Ctrl / ⌘ K