django注册账号时完成邮箱激活功能

目标:完成发送邮件的任务,让用户完成激活的步骤

需要模块:
#发送邮件
#from django.core.mail import send_mail
#加密解密
#from itsdangerous import TimedJSONWebSignatureSerializer as TJS

######发送链接部分######
#views.py中

#导入settings.py来读取其中设置的一些变量
import huasheng.settings
#导入itsdangerous模块来实现加密与解密功能,
#若刷新网页发现错误未找到modelitsdangerous,请先安装此模块(虚拟环境中输入pip install itsdangerous)
from itsdangerous import TimedJSONWebSignatureSerializer as TJS
#导入send_mail函数实现发送邮件功能
from django.core.mail import send_mail
#创建变量接受TJS(密钥),密钥可从settings中导入,可自行修改
 ts = TJS(huasheng.settings.SECRET_KEY)
#进行加密操作
trans = ts.dumps(user_name)
#得到byte类型数据,通过decode解码
trans=trans.decode()
#定义send_mail所需变量
subject = '这是我的花生二手车项目'
#发送html格式文件时使用html_message接收,区分于message
#拼接字符串已达到传入网址的目的,加密的用户名拼接在http://127.0.0.1:8000/user/active/之后以便接收后进行处理
#务必在开头加上http://,使用户在邮箱点击链接后能顺利跳转
html_message = "<a href='http://127.0.0.1:8000/user/active/"+trans+"'>这是激活邮件</a>"
#message为空,recipient_list中传入之前输入的email
send_mail(subject=subject,message='',from_email='输入发送邮件的邮箱',recipient_list=[email],html_message=html_message)
# send_mail(subject, message, from_email, recipient_list,
#           fail_silently=False, auth_user=None, auth_password=None,
#           connection=None, html_message=None):
#未写默认值的记得传参,auth_user=None, auth_password=None时会从settings.py中导入EMAIL_HOST_USER和EMAIL_HOST_PASSWORD

#在邮箱中开启smtp并设置授权码

#setting.py中设置参数

#邮箱配置
#邮箱验证配置
EMAIl_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.126.com'
#端口
EMAIL_PORT = 25
#发送邮箱
EMAIL_HOST_USER = '输入发件邮箱'
#授权码
EMAIL_HOST_PASSWORD = '输入授权码'
DEFAULT_FROM_EMAIL = '花生二手车<输入发件邮箱>'

######接收链接并激活######
#url中修改正则使其匹配到需要操作
#url中传参操作如下

url(r'active/(.+)',views.ActiveView.as_view(),name='active')

#views.py中创建对应的类,继承自View

class ActiveView(View):

#设置get方法,记得传入request请求以及正则匹配到的字符两个参数
def get(self,request,userinfo):
#接收settings.py中的密钥
        ts = TJS(huasheng.settings.SECRET_KEY)
#对密文进行解码
        user_name = ts.loads(userinfo)
#解密后找到对应的用户名 
       user = User.objects.get(username=user_name)
#将对应用户的is_active设置为1(激活)
        user.is_active = 1
#保存修改
        user.save()
#网页返回成功信息
        return HttpResponse('激活成功')

猜你喜欢

转载自blog.csdn.net/weixin_43544660/article/details/84861643