码迷,mamicode.com
首页 > 其他好文 > 详细

邮箱注册登录 之 发送邮箱 | Django

时间:2017-12-09 19:24:57      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:配置   orm   sel   gis   cti   返回   自动生成   list   生成   

# 邮箱注册登录||发送邮箱激活链接,激活账号;
# 逻辑:
#     在后台自动生成若干个验证码数字,保存到数据库中,并放置到发送内容中链接
#    的尾部,用户点击链接,提取url后面数字,与数据库中数据比对,正确就验证通过;
# utils文件夹下:email_send.py
def generate_random_str(num):
    """随机生成字母与数字的验证码"""
    code = ‘‘
    for i in range(num):
        # 随机数字
        random_num = random.randrange(10)
        # 随机字母
        random_alp = random.randrange(65,91)
        add = random.choice([random_num, random_alp])
        code+=str(add)
    return code
    
def send_register_email(email, type="register"):
    """定义发送注册验证邮件的函数"""
    email_record = EmailVerifyRecord()
    # 随机获取一个16位长的字符
    code = generate_random_str(16)
    # 将发送的验证code先保存到数据库中
    email_record.code = code
    email_record.email = email
    email_record.send_type = send_type
    email_record.save()
    
    # 发送邮件
    email_title = ""
    email_body = ""
    # 判断发送邮件的类型
    if type == "register":
        email_title = "慕学在线网注册激活链接"
        email_body = """
                请点击下面的链接激活你的账号:
                http://127.0.0.1:8000/active/{0}
            """.format(code)
        
        # django内置发送邮件的函数
        from django.core.mail import send_mail
        
        # 接受send_mail()函数返回的布尔值
        send_status = send_mail(email_title,email_body,EMAIL_FORM,[email])
        # send_mail()函数的参数:
        #     subject(title),message(内容),from_email,recipient_list(邮件列表的)...
        if send_status:
            # 如果发送成功
            pass
        
# 邮箱服务设置中的SMTP服务器,开启服务状态
# django内置的send_mail()函数需要在系统设置中配置参数
    EMAIL_HOST = "smtp.sina.com"  # 复制相关邮箱客户端SMTP服务器的地址
    EMAIL_PORT = 25
    EMAIL_HOST_USER = "公司邮箱@sina.com"
    EMAIL_HOST_PASSWORD = "*****密码"
    EMAIL_USE_TLS = False
    EMAIL_FROM = "公司邮箱@sina.com"
    
# views.py
class RegisterView(View):
    """注册"""
    def get(self, request):
        register_form = RegisterForm()

        return render(request, "register.html", {
            register_form:register_form
        })

    def post(self, request):
        from django.core.urlresolvers import reverse
        from django.shortcuts import redirect

        register_form = RegisterForm(request.POST)
        if register_form.is_valid():
            # 如果验证通过,获取表单数据
            user_name = request.POST.get(email, ‘‘)
            pass_word = request.POST.get(password, ‘‘)
            user_profile = UserProfile()
            user_profile.username = user_name
            user_profile.email = user_name
            from django.contrib.auth.hashers import make_password
            user_profile.password = make_password(pass_word)
            # 将注册未激活的信息保存到数据库
            user_profile.save()

            # 发送邮箱激活信息
            from utils.email_send import send_register_email
            # 传入邮箱及发送方式
            send_register_email(user_name, "register")

            return redirect(reverse(login))
        else:
            return render(request, "register.html", {register_form:register_form})

 

邮箱注册登录 之 发送邮箱 | Django

标签:配置   orm   sel   gis   cti   返回   自动生成   list   生成   

原文地址:http://www.cnblogs.com/pymkl/p/8012268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!