个人网站搭建(Day 19)— Django-User 用户邮箱认证

这篇博客主要是来讲一下我升级过后的用户users模块,从原来的Schnee的users模块继承而来,但是加入了用户邮箱验证等功能。

参考博客:杨仕航—我的网站搭建(第15天) 注册认证

在新的用户系统中,我默认只能够以合法的邮箱作为用户名来注册,这样能够避免出现奇奇怪怪的用户名,也便于后续的通过邮件激活用户的操作。

用户在网站注册新用户后,会创建一个未激活的新用户(无法登录网站),需要点击通过激活邮件中的链接进行激活后方可登录。

首先是urls设计,包括注册链接以及激活链接:

 path('register/', views.user_reg, name = 'register'),

 path('active/<str:active_code>', views.user_active, name = 'active'),

修改项目settings.py,添加邮箱部分设置:

EMAIL_HOST = "smtp.sina.com"
EMAIL_PORT = 25
EMAIL_HOST_USER = "xxxxxxxxx@sina.com"            # 你的邮箱账号
EMAIL_HOST_PASSWORD = "xxxxxxxxx"                 # 你的邮箱密码
EMAIL_USE_TLS = False                             # 这里是 False
EMAIL_FROM = "xxxxxxxxx@sina.com"                 # 你的邮箱账号
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER

注意:在这里我用的是新浪的邮箱,经过测试QQ邮箱也可以使用,最初使用163邮箱的时候会发现我的邮件被认为是垃圾邮件(状态码:554 DT:SPM)而不能成功发送出去,多次调试后无果采用其他邮箱。

接下来是视图函数设计,这部分很大程度上参考了杨仕航先生的博客:

from django.core.mail import send_mail
from helper.crypto import encrypt, decrypt

def get_active_code(email):
    """ 利用时间及邮箱获取激活码 """
    key = 9
    encry_str = '%s|%s' % (email, time.strftime('%Y-%m-%d', time.localtime(time.time())))
    active_code = encrypt(key, encry_str)
    return active_code


def send_active_email(email, active_code):
    """ 发送激活邮件 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值