📅 时间: 22:48
🌤️ 天气: 银川 7~25℃ 阴
疏篱曲径田家小。云树开清晓。
— 周邦彦 · 《虞美人·疏篱曲径田家小》
PetMall — 开发总结
涉及模块:前端路由、用户账户、邮件服务
宠物档案页面 404 修复
- 问题:点击「我的宠物档案」后出现 404,路由未定义。
- 解决:
- 新建
frontend/web/src/components/PetProfile.vue,实现完整的 CRUD 功能。 - 在
frontend/web/src/router/index.js中注册/pets路由。
- 新建
- 效果:页面可正常访问,展示宠物卡片、编辑、新增、删除等交互。
邮件服务兼容性修复(Python 3.12 / Django 4.1)
- 根因:Python 3.12 移除了
smtplib的keyfile/certfile参数,导致 Django 默认邮件后端在创建SMTP_SSL时抛出unexpected keyword argument 'keyfile'。 - 解决方案:
- 自定义邮件后端:
backend/server/accounts/backends.py(继承EmailBackend,手动创建SMTP_SSL连接,省去不兼容参数)。 - 配置更新:在
settings.py中使用accounts.backends.Python312EmailBackend,并切换回 163 邮箱最稳的 465 SSL 端口。 - 测试脚本:
backend/server/test_email.py,验证邮件能够成功发送。
- 自定义邮件后端:
- 结果:邮件发送成功,验证码功能恢复。
账户功能增强
- 3.1 注册密码二次确认
- 前端
Login.vue添加 “确认密码” 输入框并进行一致性校验。 - 后端
register接口新增密码长度检查(≥ 6 字符)。
- 前端
- 3.2 找回密码(忘记密码)流程
- 后端:
send-reset-code(发送验证码) &reset-password(校验验证码并更新密码)。 - 前端:
Login.vue重新设计为 登录 / 注册 / 找回密码 三模态切换界面。 - 完整的 UI 包含邮箱、验证码、密码、确认密码、获取验证码按钮及防刷倒计时。
- 后端:
关键文件变更概览
| 模块 | 文件路径 | 主要改动 |
|---|---|---|
| 邮件后端 | backend/server/accounts/backends.py | 自定义 Python312EmailBackend,兼容 Python 3.12 |
| 邮件配置 | backend/server/server/settings.py | 使用自定义后端,启用 465 SSL |
| 邮件测试 | backend/server/test_email.py | 简易脚本验证邮件连通性 |
| 账户视图 | backend/server/accounts/views.py | 新增 send-reset-code、reset-password,注册密码强度校验 |
| 账户路由 | backend/server/accounts/urls.py | 注册新 API 路由 |
| 登录页面 | frontend/web/src/components/Login.vue | 三模态 UI、确认密码、找回密码交互 |
| 前端路由 | frontend/web/src/router/index.js | 注册 /pets 路由 |
| 宠物档案 | frontend/web/src/components/PetProfile.vue | 完整的宠物档案 CRUD 页面 |
后续
- 升级 Django:Django 4.2 已修复上述兼容性问题,届时可移除自定义后端。
- 缓存方案:当前验证码使用默认内存缓存,生产环境建议改为 Redis,防止服务重启导致验证码失效。
- 密码策略:如需更强密码规则,可在后端加入正则校验(大小写、数字、特殊字符)。
本次迭代实现了前端路由修复、邮件服务兼容性
Thanks for reading!
