enroll
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
+3
-4
@@ -1,9 +1,8 @@
|
|||||||
from random import Random # 用于生成随机码
|
from random import Random # 用于生成随机码
|
||||||
from django.core.mail import send_mail # 发送邮件模块
|
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 = ""
|
||||||
@@ -57,4 +56,4 @@ def send_code_email(email, send_type="register"):
|
|||||||
send_status = send_mail(email_title, email_body, settings.EMAIL_FROM, [email])
|
send_status = send_mail(email_title, email_body, settings.EMAIL_FROM, [email])
|
||||||
if not send_status:
|
if not send_status:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|||||||
+2
-2
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user