🏆🏆🏆教程全知识点简介:1.邮件验证系统包括Django发送邮件、保存邮箱并发送验证邮件、Celery使用Django配置文件设置。2. 地址管理涵盖shou货地址、省市区地址查询、数据库建表、后端接口设计、前端实现、缓存使用(安装、使用方法、省市区视图缓存、缓存数据保存位置和有效期设置)、用户地址管理。3. 数据库设计包括用户部分、产品部分、数据库表设计、表结构、数据库模型类。4. 容器化部署涵盖Docker使用(Ubuntu安装、启动停止、镜像操作)、FastDFS客户端与自定义文件存储系统、页面静态化、定时任务、静态化首页脚本。5. 产品系统包括产品详情页、异步任务触发、脚本工具、用户浏览历史记录(保存、查看)。6. 产品模式涵盖B2B企业对企业、C2C个人对个人、O2O线上到线下、开发流程、需求分析。7. 购wu车系统包括购wu车管理、购wu车数据存储设计(Redis保存已登录用户)、添加到购wu车、查询购wu车数据、登录合并购wu车。8. 订order单系统涵盖提交订order单、我的订order单、订order单评价、订order单结算、保存订order单、MySQL事务隔离级别修改、下单成功页面。9. 搜索系统包括产品搜索、搜索引擎原理、Elasticsearch、Docker安装Elasticsearch扩展、前端实现。10. 支fu系统涉及 集成、Xadmin管理后台。11. 项目配置包括项目准备、配置文件修改、数据库配置、Redis配置、本地化语言时区、异常处理、日志记录。12. 用户认证系统涵盖图片验证码、域名设置、前端Vue代码、跨域CORS、Celery发送短信、账号存在判断、JWT认证(JWT概念、构成、应用、Django REST framework JWT)、 登录(登录流程、模型类创建、urllib使用、回调处理)、用户中心个人信息。
📚📚👉👉👉本站这篇博客: juejin.cn/post/753974… 中查看
📚📚👉👉👉本站这篇博客: juejin.cn/post/753974… 中查看
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节

🚀🚀🚀本篇主要内容
邮件与验证
学习目标:
-
使用Django发送邮件的方法
-
邮件激活的机制
业务说明:
在用户中心页面中, 允许用户设置邮箱

当用户点击保存后, 会向用户发送邮件以验证邮箱的有效性。

为了避免用户未收到验证邮箱, 提供“重新发送验证邮件”按钮允许用户重新发送邮件。

邮箱验证成功,显示已验证。

技术说明:
在邮件中提供的激活链接地址,为了能区分是哪个用户在进行邮箱验证,需要在链接中包含用户和邮箱的识别信息,如user_id和email数据,但是基于安全性的考虑,不能将这两个数据直接暴露在邮件链接中,而是需要进行隐藏和签名处理(能够检测出是否修改过链接数据)。可以使用前面学过的itsdangerous对user_id和email数据进行处理,生成token作为链接的参数。
使用Django发送邮件
Django中内置了邮件发送功能,被定义在django.core.mail模块中。发送邮件需要使用SMTP服务器,常用的免费服务器有:163、126、,下面以163邮件为例。
1)注册163邮箱itcast88,登录后设置。

2)在新页面中点击“客户端授权 ”,勾选“开启”,弹出新窗口填写手机。

3)填写授权码。

4)提示开启成功。

- 在Django配置文件中,设置邮箱的配置信息
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
#发送邮件的邮箱
EMAIL_HOST_USER = 'itcast88@163.com'
#在邮箱中设置的客户端授权
EMAIL_HOST_PASSWORD = 'python808'
#收件人看到的发件人
EMAIL_FROM = 'python<itcast88@163.com>'
- 使用Django提供的模块发送邮件
在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字符串
例如:
msg='<a href="http://www.itcast.cn/subject/pythonzly/index.shtml" target="_blank">点击激活</a>'
send_mail('注册激活','',settings.EMAIL_FROM, ['itcast88@163.com'], html_message=msg)
保存邮箱并发送验证邮件
后端接口设计:
请求方式:PUT /email/
请求参数: JSON 或 表单
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| str | 是 | Email邮箱 |
返回数据: JSON
| 返回值 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| id | int | 是 | 用户id |
| str | 是 | Email邮箱 |
在users/serializers.py中新建序列化器,用户验证用户提交的邮箱信息。
class EmailSerializer(serializers.ModelSerializer):
"""
邮箱序列化器
"""
class Meta:
model = User
fields = ('id', 'email')
extra_kwargs = {
'email': {
'required': True
}
}
def update(self, instance, validated_data):
instance.email = validated_data['email']
instance.save()
return instance
在users/views.py中创建新视图,用于保存用户的邮箱信息,注意需要用户登录通过认证后。
from rest_framework.permissions import IsAuthenticated
class EmailView(UpdateAPIView):
"""
保存用户邮箱
"""
permission_classes = [IsAuthenticated]
serializer_class = serializers.EmailSerializer
def get_object(self, *args, **kwargs):
return self.request.user
设置路由信息
url(r'^emails/$', views.EmailView.as_view()), # 设置邮箱
补充发送验证邮件
在保存邮箱的时候,需要向用户发送验证邮件, 将发送邮件的工作放到celery中异步执行。
在celery*tasks目录中新建email目录和email/*_init**.py文件和email/tasks.py文件
在email/tasks.py文件