setting.py里面的配置
# 邮件
EMAIL_HOST = 'smtp.163.com'
# 设置端口号,为数字
EMAIL_PORT = 25
#设置发件人邮箱
EMAIL_HOST_USER = 'kongfuzi_k@163.com'
# 设置发件人 授权码
EMAIL_HOST_PASSWORD = '你的授权码'
# 设置是否启用安全链接
EMAIL_USER_TLS = True
# EMAIL_USER_TLS = False
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
# redis 的配置文件
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "密码",
}
}
}
这里是views.py里面的代码
from django.core.cache import cache # 存入redis
from rest_framework.views import APIView
from rest_framework.response import Response
from shiyanlou_dj import settings
from random import randint
import hashlib
#生成随机的验证码
def Email_Code():
code_ = ''
code_str = 'abcdefghijklmnopqrstuvwxyz1234567890'
for k in range(5):
code_ += code_str[randint(0,35)]
return code_
# md5加盐
def md5_md5(params):
md5 = hashlib.md5(params.encode(encoding='utf-8'))
return md5.hexdigest()
class RegisterView(APIView):
def post(self, request):
try:
email = request.data.get('email') # 获取前端邮箱
code = request.POST.get('verif') #获取前段的验证码
# 验证邮箱的格式
re_email = r'(\w+)@(\w+)\.(\w+)'
if not re.match(re_email, email):
return Response({'code': 4001, 'msg': '邮箱格式不正确'})
#判断是否输入了验证码
if not code:
return Response({'code':4003,'msg':'请输入验证码'})
#获取验证码,并判断是否失效了
code_ = cache.get('syl_'+email)
if not code_:
return Response({'code':4006,'msg':'验证码已失效'})
#判断输入的验证码,和获取到的验证码是否一致
if code == code_:
data = {
'email':email,
'password':password,
'username':email,
'img':'666'
}
# 序列化写入数据
userser = UserSerializer(data=data)
if not userser.is_valid():
return Response({'code':4005,'msg':'注册失败'})
ret = {
'code': 200,
'msg': '注册成功'
}
userser.save() #提交
return Response(ret)
return Response({'code':4004,'msg':'验证码错误'})
#返回错误信息
except:
return Response({'code': 0, 'msg': '网络有些问题,请等一下再试'})
# post请求
# 获取到验证码,并存入redis
# 发生邮箱
class Email_code_APIView(APIView):
def post(self, request):
try:
# 从前端获取验证码
email = request.POST.get('email')
# 生成随机的验证码
code = Email_Code()
ret = '您的验证码是{}'.format(code)
# 给邮箱发送验证码
my_email = send_mail('激活验证', ret, settings.DEFAULT_FROM_EMAIL, [email])
if not my_email == 1:
return Response({
'code': 0,
'msg': "邮件发送失败",
})
key = 'syl_' + email
cache.set(key, code, 30) # 5分钟的有效时间
ret = {
'code': 200,
'msg': "邮件发送成功"
}
return Response(ret)
# 返回错误信息
except:
return Response({'code': 0, 'msg': '网络有些问题,请等一下再试'})
自己点开看吧 ,我也是自己看的
记得不要忘记打开redis
要不然你会一直的报错😁😁😁