DDR爱好者之家 Design By 杰米
项目需求:用户注册页面注册之后,系统会发送一封邮件到用户邮箱,用户点击链接以激活账户,其中链接中的用户信息需要加密处理一下
其中激活自己邮箱的smtp服务的操作就不在加以说明,菜鸟教程上有非常清晰的讲解,也可以去网上搜索详细步骤
首先在Django项目的settings文件中配置发送邮件相关的配置如下:
# 固定写法 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # smtp服务器地址 EMAIL_HOST = 'smtp.qq.com' # 固定端口号 EMAIL_PORT = 25 #发送邮件的邮箱 EMAIL_HOST_USER = '2746565701@qq.com' #在邮箱中设置的客户端授权密码 EMAIL_HOST_PASSWORD = 'ytnvwapcbxmcdfig' #收件人看到的发件人,尖括号中的必须与上面的user一致 EMAIL_FROM = '天天生鲜<2746565701@qq.com>'
用户模块的views.py文件关于itsdangerous和邮件发送的代码如下,项目其它部分的操作代码这里全部删除,这里使用的是基于类的视图:
基本逻辑:
- 利用itsdangerous模块对链接中的用户信息加密,生成加密后的用户信息token;
- 调用Django发送邮件的相关方法,进行发送邮件(邮件的配置已经配置好);
- 邮件发送的链接中有一个可变参数,包含着用户id加密后的信息;
- 用户接收到邮件之后,点击链接,跳转到对应的视图类进行处理;
- 负责激活的视图类,解密用户的信息,获取用户id,查询到对应用户(在这个过程会判断被加密的信息是否超时);
- 将对应用户中数据库中用户表中 is_active 字段的值改为1,表示此用户被激活;
- 跳转到首页;
# 导入itsdangerous中要用到的加密类 from itsdangerous import TimedJSONWebSignatureSerializer as Serializer # 导入itsdangerous中超时的异常 from itsdangerous import SignatureExpired # 导入配置文件 from django.conf import settings # 导入Django中的发送邮件的方法 from django.core.mail import send_mail from .models import User # Create your views here. class RegisterView(View): """注册""" .................... def post(self, request): """进行注册处理""" # 发送激活邮件,包含一个激活的链接:https://127.0.0.1:8000/user/active/3 # 激活链接中需要包含用户的身份信息,并且要把身份信息进行加密 # 加密用户的身份信息,生成激活的token serializer = Serializer(settings.SECRET_KEY, 3600) # 创建爱一个itsdangerous模块中加密类的对象,其中SECRET_KEY用settings中的,第二个参数为超时时间 info = {'confirm': user.id} # 被加密的信息,一个字典,字典值为接收邮件用户的id # 利用dumps方法进行加密,加密后为bytes数据 token = serializer.dumps(info) # bytes数据 token = token.decode() # bytes转str # 发邮件 subject = '天天生鲜欢迎信息' # 邮件主题 message = '' 邮件信息,因为有html__message了,所以这里为空就好 sender = settings.EMAIL_FROM # 发送者,直接从配置文件中导入上面配置的发送者 receiver = [email] # 接收者的邮箱,是一个列表,这里是前端用户注册时传过来的 email # html结构的信息,其中包含了加密后的用户信息token html_message = '<h1>{},欢迎您成为天天生鲜注册会员</h1>请点击下面链接激活您的用户<br><a href="http:127.0.0.1:8000/user/active/{}" rel="external nofollow" >http:127.0.0.1:8000/user/active/{}</a>'.format(username, token, token) # 调用Django发送邮件的方法,这里传了5个参数 send_mail(subject, message, sender, receiver, html_message=html_message) # 返回应答:跳转到首页 return redirect(reverse('goods:index')) class ActiveView(View): """用户激活""" def get(self, request, token): """进行用户激活""" # 进行解密,获取要激活的用户信息 serializer = Serializer(settings.SECRET_KEY, 3600) try: # 通过itsdangerous模块的loads方法解密 info = serializer.loads(token) # 获取待激活用户的id user_id = info.get('confirm') # 根据id获取用户信息 user = User.objects.get(id=user_id) # 激活用户操作,将数据库中对应用户的is_active参数变为1 user.is_active = 1 user.save() # 跳转到登录界面 return redirect(reverse('user:login')) except SignatureExpired as e: # 激活链接已经过期 return HttpResponse('激活链接已过期!')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]