个人项目作品集网站- Django SQLite
项目描述
一个用 Django 构建的个人项目作品集网站
http://127.0.0.1:8000/
http://127.0.0.1:8000/admin/
王猛 123456
功能描述
– 完整介绍页 — 首页一次性呈现个人定位、整体介绍、项目主线、教育背景、项目列表、
荣誉与技能,导航锚点可直达各区块。
– 项目卡片封面 — 每张项目卡片顶部渲染一张封面图,取值优先级为
「显式指定的封面图 → 第一张实机截图 → 演示动图」,三者皆无则不渲染封面;
封面右下角带分类角标,悬停轻微放大。所有封面均取自项目真实运行产出,非设计稿。
– 项目详情页 — 每个项目独立页面,包含完整介绍、我的角色与主要贡献、量化指标、
技术栈、相关链接,以及可播放的演示视频与实机运行图集。
– 实机运行图集 — 每个项目可挂多张真实运行产出的截图 / 结果图,带类型标签
(界面截图 / 运行结果 / 图表曲线 / 桌面端界面)与逐张文字说明,
响应式网格布局,点击缩略图查看原图;图表类缩略图保持完整不裁切。
– 演示素材自动降级 — 本地视频文件 → 外部嵌入链接 → GIF 动图 →
无视频但有截图则不显示占位 → 完全无素材才提示补充,缺素材也不会破版。
– 分类筛选 — 项目按「AI × 材料 / 轨道交通 / 视觉 · 人机交互 / 系统交付」四类组织,
支持 URL 参数筛选(`?category=materials`),可分享具体筛选结果。
– 数据全部后台可维护 — 项目、贡献点、指标、技术栈、链接、实机截图、首页各区块文案
均在 Django Admin 中维护,无需改代码;项目下的五类明细用内联表格批量编辑。
– 响应式布局 — 桌面端 / 平板 / 移动端三档断点,移动端为汉堡菜单 + 单列布局。
– 社交分享卡片 — 每个页面都输出完整的 Open Graph / Twitter Card 元信息
(`og:title` / `og:description` / `og:image` / `og:url` / canonical),
把链接发到微信、飞书、LinkedIn、X 时会显示成带标题、摘要与配图的卡片,
而不是一条光秃秃的链接。首页用 1200×630 的品牌分享大图
(由 `docs/tools/make_og_cover.py` 生成),详情页自动改用该项目的封面图,
并如实写入图片真实宽高。
– 可被搜索引擎收录 — 自带 `robots.txt`(屏蔽 `/admin/`)与
`sitemap.xml`(首页 + 全部项目详情页,`lastmod` 取项目更新时间)。
– 零前端依赖 — 原生 HTML / CSS / JavaScript,无框架、无 CDN,可完全离线运行。
– 38 项自动化测试 — 覆盖首页各区块、分类筛选与非法参数回退、空态提示、
6 个详情页渲染、视频嵌入、实机图集渲染与空态、卡片封面取值优先级、
翻页与同类推荐、404(含自定义 404 页)、后台登录保护、
分享卡片元信息与 `SITE_URL` 生效、`robots.txt` / `sitemap.xml`、
以及「模板语法不得泄漏」与「截断必须带省略号」两条防回归断言。
运行环境
Python3.10
项目技术
后端框架 Django 3.2(LTS)
语言 / 运行时 Python
数据库 SQLite
模板 Django Template Language
前端 原生 HTML5 / CSS3(变量 + Grid + Flex)/ ES6,无任何第三方依赖
媒体服务 Django `MEDIA_URL` / `MEDIA_ROOT` 静态媒体托管
部署 Gunicorn(WSGI 服务器)+ WhiteNoise(自托管 `/static/`),见 `deploy/start.sh`
图片处理 Pillow(Django `ImageField` 的硬依赖,缺则 `migrate` 报 `fields.E210`)
测试 Django `TestCase`
以上系统源码经过技术整理与调试,确保能正常运行


