zoukankan      html  css  js  c++  java
  • Django----邮件发送验证{小}

    -----------------------------------------------------------------------------------------------------
    # 导入已封装好的函数-- 也成工具文件夹
    from utils.sha2203 import *
    import hashlib
    import random
    import re
    # 封装sha256
    def sha56(raw):
        # 实例化sha256对象
        sha56 = hashlib.sha256()
        # 把要加密的密码,进行update操作并转成utf-8,不写默认是utf-8
        sha56.update(raw.encode('utf-8'))
        # 返回一个sha56的16进制的格式
        return sha56.hexdigest()
    
    
    
    # 加盐,随机盐
    def random_safe(n=5):
        # 定义一个简单的字符串
        str = '23456789abcdefgjkmnpqrestuvwxyz'
        # 定义一个空值,将每次循环的随机数,拼接到ret上。然后返回。
        ret = ''
        for i in range(n):
            # len出字符串的长度,利用下标进行随机抽出。
            ret += str[random.randint(0,30)]
        return ret
    
    
    # 正则验证邮箱
    def check_email(email):
        ret = re.match(r'(w+)@(w+).(w){2,}$',email)
        if ret:
            # 满足条件
            return True
        else:
            # 不满足条件
            return False
    
    # 正则验证密码
    def check_passwd(password):
        pattern = re.match("^(?=.*[a-zA-Z].*)(?=.*[d].*)(?=.*_.*).{6}$",password)
        if pattern:
            return True
        else:
            return False
    
    
    -----------------------------------------------------------------------------------------------------
     # 实现从前端获取的数据进行序列化操作后,执行发送邮件
        ************************ 公共部分 *****************
        if user_ser.is_valid():
                user_ser.save()
                code = random_safe()   # 发邮件验证码
                self.storge_code(eml,code)   # 把验证码存入redis里
                
                self.send_mailx(code)    # 发邮件
                return Response({'code':200,'message':'注册成功'})
    ----------------------------------------------------------------------------------------------------
    # 1 #
    settings.py配置
    # 邮件参数设置 
    
    # 邮件---
    EMAIL_HOST = 'smtp.163.com'
    # 设置端口号,为数字
    EMAIL_PORT = 25
    #设置发件人邮箱
    EMAIL_HOST_USER = 'liuguoxin_97@163.com'
    # 设置发件人 授权码
    EMAIL_HOST_PASSWORD = '123456789lgx'
    # 设置是否启用安全链接
    EMAIL_USER_TLS = True
    EMAIL_USER_TLS = False
    DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
    
    # 2 #
    views.py里
    # 发邮件,导入send_mail,在Django的底层已封装好。
    from django.core.mail import send_mail
    
    # 可以在某个方法调用执行self.send_mailx()即可发送邮件。
     # 利用面向对象写邮件发送
        def send_mailx(self,code):
            # code = random_safe()   # 发邮件验证码
            # 发邮件的参数 1.主题,2.内容,3.发件人,4.收件人
            html = '您的验证码:{}'.format(code)     # 导进来的是实例,所以要加()
            return send_mail(
                '实验楼注册邮箱验证码',
                html,
                'liuguoxin_97@163.com',
                ['1816668038@qq.com'] 
            )
     
    -----------------------------------------------------------------------------------------------------
    
    ##### 如何存入redis库{redis是存储在服务器的内存中,它支持的数据类型比较多}
    from django.core.cache import cache
     # 将验证码存在redis中 
        # 在storge_code函数的参数中有俩个参数(自己定义的){也可以是多个【从上面----传来的 ---- 】}
        def storge_code(self,eml,code):
            # 怎么给redis设置,set cacha.set()   俩个值key values
            key = 'jihuo_'+eml
            cache.set(key,code)
      
        def get(self,request):
            # cache从redis用get拿出所查数据
            tmp = cache.get('jihuo_1816668038@qq.com')
            print(tmp)
            return HttpResponse(tmp)
    
  • 相关阅读:
    jdbc入门
    mysql 各项操作流程
    python中的细小知识点罗列
    Linux之高级指令
    linux之进阶指令
    Linux之基础指令
    STL之适配器
    STL之谓词
    STL之函数对象
    STL之map容器和multimap容器
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12383044.html
Copyright © 2011-2022 走看看