-----------------------------------------------------------------------------------------------------
# 导入已封装好的函数-- 也成工具文件夹
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)