This commit is contained in:
ygm1881
2022-04-17 22:04:32 +08:00
parent 2e5416aa4d
commit 7015fd799d
5 changed files with 21 additions and 18 deletions
+2 -2
View File
@@ -112,11 +112,11 @@ AUTH_PASSWORD_VALIDATORS = [
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True USE_I18N = True
USE_TZ = True # USE_TZ = True
# Static files (CSS, JavaScript, Images) # Static files (CSS, JavaScript, Images)
+1 -2
View File
@@ -3,7 +3,6 @@ from django.core.mail import send_mail # 发送邮件模块
from enroll.models import EmailVerifyRecord # 邮箱验证model from enroll.models import EmailVerifyRecord # 邮箱验证model
from django.conf import settings # setting.py添加的的配置信息 from django.conf import settings # setting.py添加的的配置信息
import random import random
import datetime
# 生成随机字符串 # 生成随机字符串
@@ -36,7 +35,7 @@ def send_code_email(email, send_type="register"):
email_record.code = code email_record.code = code
email_record.email = email email_record.email = email
# email_record.send_type = send_type # email_record.send_type = send_type
# email_record.send_time = datetime.datetime.now() # email_record.send_time = time.time()
email_record.save() email_record.save()
# 初始化为空 # 初始化为空
email_title = "" email_title = ""
+2 -2
View File
@@ -49,9 +49,9 @@ class New_member(models.Model):
class EmailVerifyRecord(models.Model): class EmailVerifyRecord(models.Model):
# 验证码 # 验证码
code = models.CharField(max_length=20, verbose_name="验证码") code = models.CharField(max_length=5, verbose_name="验证码")
email = models.EmailField(max_length=50, verbose_name="邮箱") email = models.EmailField(max_length=50, verbose_name="邮箱")
# 包含注册验证和找回验证 # 包含注册验证和找回验证
# send_type = models.CharField(verbose_name="验证码类型", max_length=10, # send_type = models.CharField(verbose_name="验证码类型", max_length=10,
# choices=(("register", "注册"), ("forget", "找回密码"))) # choices=(("register", "注册"), ("forget", "找回密码")))
send_time = models.DateTimeField(verbose_name="发送时间", auto_now=True) send_time = models.DateTimeField(verbose_name="发送时间", auto_now_add=True)
+2 -3
View File
@@ -1,7 +1,6 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.validators import UniqueValidator from rest_framework.validators import UniqueValidator
from enroll.models import Department, New_member, EmailVerifyRecord
from enroll.models import Department, New_member
class Department_serializer(serializers.ModelSerializer): class Department_serializer(serializers.ModelSerializer):
@@ -56,6 +55,6 @@ class Send_email_serializer(serializers.Serializer):
# code = serializers.CharField(max_length=10) # code = serializers.CharField(max_length=10)
email = serializers.EmailField(max_length=50, email = serializers.EmailField(max_length=50,
validators=[UniqueValidator( validators=[UniqueValidator(
queryset=New_member.objects.all(), queryset=New_member.objects.all() and EmailVerifyRecord.objects.all(),
message="该邮箱已存在")], message="该邮箱已存在")],
error_messages={"max_length": "邮箱过长", "invalid": "请输入正确格式的邮箱"}) error_messages={"max_length": "邮箱过长", "invalid": "请输入正确格式的邮箱"})
+12 -7
View File
@@ -1,4 +1,3 @@
from rest_framework.exceptions import ValidationError, ErrorDetail
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.generics import GenericAPIView from rest_framework.generics import GenericAPIView
from enroll.models import Department, EmailVerifyRecord, New_member from enroll.models import Department, EmailVerifyRecord, New_member
@@ -8,6 +7,7 @@ from rest_framework import status
from rest_framework.views import APIView from rest_framework.views import APIView
from enroll.email import send_code_email from enroll.email import send_code_email
import re import re
import time
class Department_message(GenericAPIView): class Department_message(GenericAPIView):
@@ -32,24 +32,29 @@ class Sign_up(GenericAPIView):
code = data['verification_code'] code = data['verification_code']
print(f"code={code}") print(f"code={code}")
try: try:
if code != EmailVerifyRecord.objects.get(email=data['email']).code: oj = EmailVerifyRecord.objects.get(email=data['email'])
send_time = str(oj.send_time).split('+')[0].split('.')[0]
send_time = time.mktime(time.strptime(send_time, '%Y-%m-%d %X'))
now = time.time()
if now - send_time > 120:
return Response(
{"code": 40000, "msg": {"verification_code": "邮箱验证码过期"}},
status=status.HTTP_400_BAD_REQUEST)
if code != oj.code:
return Response({"code": 40000, "msg": {"verification_code": "邮箱验证码错误"}}, return Response({"code": 40000, "msg": {"verification_code": "邮箱验证码错误"}},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
except EmailVerifyRecord.DoesNotExist: except EmailVerifyRecord.DoesNotExist:
return Response({"code": 40000, "msg": {"verification_code": "请先发送验证码"}}, return Response({"code": 40000, "msg": {"verification_code": "请先发送验证码"}},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
ret = serializer.is_valid(raise_exception=False) ret = serializer.is_valid(raise_exception=False)
# serializer.save()
# print(serializer.errors)
# ErrorDetail
if ret: if ret:
serializer.save() serializer.save()
return Response({"code": 20000, "msg": "成功"})
else: else:
error = {} error = {}
for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()): for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()):
error[str(i)] = str(j[0]) error[str(i)] = str(j[0])
return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST) return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)
return Response({"code": 20000, "msg": "成功"})
def get(self, request): def get(self, request):
string = request.query_params.get('string', '') string = request.query_params.get('string', '')
@@ -71,6 +76,7 @@ class Send_email(APIView):
def post(self, request): def post(self, request):
data = request.data data = request.data
serializer = Send_email_serializer(data=data) serializer = Send_email_serializer(data=data)
# code_serializer = Code_email_serializer()
ret = serializer.is_valid() ret = serializer.is_valid()
if ret: if ret:
# serializer.save() # serializer.save()
@@ -81,4 +87,3 @@ class Send_email(APIView):
for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()): for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()):
error[str(i)] = str(j[0]) error[str(i)] = str(j[0])
return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST) return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)