- 04-architecture 3.1: add ProjectIndexPage; authoritative page tree (project pages live under /projects/, never under scenario pages); ScenarioPage renders projects via query; filtering lives in ProjectIndexPage.get_context(), no separate Django view; Page M2M fields must use modelcluster ParentalManyToManyField - 06-tasks: sync T-102 row/detail and T-204 quick-table accordingly - routes: point project list page back to the 3.1 tree - progress.md: append maintenance record Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
路由与页面结构
本文约定前台页面路由、页面职责和组件归属。
页面路由
| 路由 | 页面 | MVP 说明 |
|---|---|---|
/ |
首页 | 展示场景入口、推荐骨架、最新文章。 |
/scenarios/ |
场景总览页 | 展示所有场景分类。 |
/scenarios/{slug}/ |
场景详情 / 列表页 | 展示某个场景下的骨架项目。 |
/projects/ |
骨架项目列表页 | 支持语言、框架、数据库、AI 分数和关键词筛选。 |
/projects/{slug}/ |
骨架详情页 | 展示项目详情、评分、推荐理由和外部链接。 |
/languages/{slug}/ |
语言聚合页 | MVP 可由筛选页替代。 |
/frameworks/{slug}/ |
框架聚合页 | MVP 可由筛选页替代。 |
/articles/ |
文章列表页 | 展示评测、对比、避坑指南。 |
/articles/{slug}/ |
文章详情页 | 展示文章正文。 |
/admin/ |
Wagtail Admin | 后台内容维护。 |
页面职责
首页
- 展示主场景分类。
- 展示推荐骨架项目。
- 展示最新文章。
- 引导进入项目列表和场景页。
场景页
- 展示该场景说明。
- 展示该场景下骨架项目。
- 支持跳转项目详情。
- 无项目时展示空状态。
项目列表页
- 由
ProjectIndexPage承载;页面树位置与查询方式见04-architecture.md§3.1。 - 展示所有已发布骨架项目。
- 支持按语言、框架、数据库、AI 分数、关键词筛选。
- 筛选条件体现在 URL 查询参数中;参数名、取值和组合规则以
04-architecture.md§3.4 契约表为唯一权威,本文不重复维护。 - 展示当前筛选条件和清除筛选入口。
项目详情页
- 根据 slug 定位单个骨架项目。
- 展示核心信息、技术栈、评分、适用场景、不适用场景、推荐理由。
- 外部链接打开到 GitHub / 官网。
- 如果是赞助项目,展示 Sponsored 标识。
文章页
- 展示评测、对比、避坑指南。
- 文章可以链接到骨架详情页。
后台
- 使用 Wagtail Admin。
- 编辑者维护项目、分类、标签、评分和文章。
- 不开发单独后台前端。
模板 / 组件建议
| 模板 / 组件 | 归属 | 说明 |
|---|---|---|
base.html |
全局 | 页面框架、导航、SEO block、页脚。 |
home_page.html |
首页 | 场景入口、推荐项目、最新文章。 |
project_card.html |
通用 include | 项目卡片。 |
project_filters.html |
列表页 include | 筛选控件。 |
score_badge.html |
通用 include | AI 友好度评分展示。 |
sponsored_badge.html |
通用 include | 赞助标识。 |
empty_state.html |
通用 include | 无结果状态。 |
导航规则
- 首页进入场景页:点击场景入口。
- 场景页进入项目详情:点击项目卡片。
- 项目列表保留筛选条件,清除筛选后回到
/projects/。 - 后台只通过
/admin/访问。 - 权限不足使用 Wagtail 默认后台权限处理。