用户中心个人信息
在该页面会展示用户名,手机号,邮箱,邮箱验证状态
修改用户模型类,增加邮箱是否验证状态
- 进入该页面时,前端向后端请求数据;
- 后端进行序列化把数据返回;
- 在视图加上 permission_classes 权限认证,只有当用户登录后才将数据返回;
邮箱与验证
-
在用户中心,用户可以选择是否绑定邮箱;
-
用户输入邮箱点击保存后,发送请求到后端,后端保存邮箱,需要用户登录认证,在后端生成验证邮箱的链接;
-
向用户发送邮件以验证邮箱的有效性,邮件在使用 celery 进行异步进行发送;
-
用户收到邮件,点击邮件中的链接,会跳转到邮件验证页面,前端向后端发送请求;
-
后端从链接中提取 token,对 token 和 token 中的数据进行验证,
-
验证成功,保存邮箱验证状态,返回成功信息;
-
为了避免用户未收到验证邮件,提供“重新发送验证邮件”按钮允许用户重新发送邮件,其实就是重新再次请求发送验证邮件的接口;
-
用户点击邮件进行验证成功后,在用户界面显示已验证。
在邮件中提供的激活链接地址,为了区分用户和安全考虑,使用 itdangerous 对 user_id 和 email 数据进行处理,生成 token,作为参数,拼接在链接中,
Django 内置发送邮件功能
Django 中内置了邮件发送功能,但是 Django 没有发送邮件的服务器,使用 163 服务器来发送,在 163 设置中开启 SMTP 服务,在配置文件中设置邮箱的配置信息,
在 django.core.mail 模块提供了 send_mail 来发送邮件。
send_mail(subject, message, from_email, recipient_list,html_message=None)
- subject 邮件标题
- message 普通邮件正文, 普通字符串
- from_email 发件人
- recipient_list 收件人列表
- html_message 多媒体邮件正文,可以是html字符串