-
导包 from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
-
在User类中,添加generate_active_token
class User(AbstractUser, BaseModel):
“”“用户模型类”""
def generate_active_token(self):
“”“生成用户签名字符串”""
serializer = Serializer(settings.SECRET_KEY, 3600)
info = {‘confirm’: self.id}
token = serializer.dumps(info)
return token.decode()class Meta: db_table = 'df_user' verbose_name = '用户' verbose_name_plural = verbose_name
send_register_active_email(user.email, user.username, user.generate_active_token())
def send_register_active_email(to_email, username, token):
# 发送激活右键,包含激活连接 /user/active/1
# 激活连接中,要包含用户的信息。
subject = ‘天天生鲜欢迎信息’
message = ‘{},欢迎您成为天天生鲜会员。
请点击下边连接,激活您的账户:
’
‘http://127.0.0.1:8001/user/active/{token}’
.format(username, token=token)
to_list = [to_email]
send_mail(subject, message, settings.EMAIL_FORM,
to_list, html_message=message, fail_silently=False)
time.sleep(5)/user/active
class ActiveView(View):
“”“用户激活”""
def get(self, request, token):
serializer = Serializer(settings.SECRET_KEY, 3600)
try:
info = serializer.loads(token)
# 获取激活用户Id
user_id = info[‘confirm’]
# 根据用户Id获取用户数据
user = User.objects.get(id=user_id)
user.is_active = 1
user.save()# 跳转到登录页 return redirect(reverse('user:login')) except SignatureExpired as e: # 激活码 已经过期.实际项目中,应该弹出一个页面,然后提示,提示用户,需要再次发送激活右键,让用户操作 return HttpResponse('激活连接已过期')
Django发送邮件
最新推荐文章于 2023-09-05 16:37:40 发布