Skip to content

fix: 修复6个P2级Bug(评分校验/合集分页/机器人健壮性/查询稳定性) - #44

Merged
aba2222 merged 1 commit into
aba2222:mainfrom
xiokuai:fix/p2-bugs
Aug 12, 2026
Merged

fix: 修复6个P2级Bug(评分校验/合集分页/机器人健壮性/查询稳定性)#44
aba2222 merged 1 commit into
aba2222:mainfrom
xiokuai:fix/p2-bugs

Conversation

@xiokuai

@xiokuai xiokuai commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

背景

延续 #42 (P0) 与 #43 (P1) 后的 P2 级别 Bug 修复。本 PR 聚焦输入校验、分页缺失、机器人健壮性、查询稳定性等中等优先级问题,所有修复均通过测试。

修复清单

# 文件 问题 修复
1 forum/views.py rate_item 评分接口直接 int(score),非数字输入触发 ValueError 返回 500 增加 try/except 类型转换 + 1-5 范围校验,非法输入重定向并 messages.error 提示
2 forum/views.py collection_list Collection.objects.all() 无分页,数据量大时单页渲染性能差 Paginator 每页 20 条 + select_related('owner') 减少 N+1 查询
3 forum/views.py collection_detail 合集内文章无分页 Paginator 每页 20 条,select_related('post', 'post__author') 优化
4 forum/bots_manager.py send_comment 帖子被删除后 bot 回复触发 Post.DoesNotExist,线程崩溃 try/except 捕获 Post.DoesNotExist / User.DoesNotExist 静默跳过
5 forum/views.py index Post.objects.all()[:6] 未显式排序,依赖模型 Meta,跨查询行为不稳定 改为 order_by('-created_at')[:6] 显式排序
6 forum/bots/bot.py BotBase.handler context.get(id) 误用内置函数 id 作为键,永远返回 None 改为字符串键 context.get("id")

模板改动

  • collection_list.html / collection_detail.html:新增分页导航(上一页 / 当前页/总页数 / 下一页)

测试

$ python manage.py test
Creating test database for alias 'default'...
............
----------------------------------------------------------------------
Ran 12 tests in 47.499s

OK

全部 12 个测试通过。

说明

- Bug1 rate_item: score 增加 int 类型转换 try/except +
  1-5 范围校验, 非法输入重定向并提示而非 500
- Bug2 collection_list: 增加 Paginator 每页 20 条,
  模板增加分页导航; select_related('owner') 减少 N+1
- Bug3 collection_detail: 合集内文章增加 Paginator
  每页 20 条, 模板增加分页导航
- Bug4 send_comment: Post/User 不存在时静默跳过,
  避免 bot 回复已删帖子时 500
- Bug5 index 首页: Post.objects.all()[:6] 改为
  order_by('-created_at')[:6], 显式排序不依赖 Meta
- Bug6 BotBase.handler: context.get(id) 改为
  context.get("id"), 修复内置函数 id 导致永远返回 None
Comment thread forum/views.py
Comment thread forum/views.py
@aba2222
aba2222 merged commit 37255f1 into aba2222:main Aug 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants