PetMall — 开发总结

PetMall — 开发总结

2026年04月02日
671 字 · 3 分钟

📅 时间: 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 移除了 smtplibkeyfile/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-codereset-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!

PetMall — 开发总结

2026年04月02日
671 字 · 3 分钟