【发布时间】:2021-09-15 12:45:29
【问题描述】:
我正在尝试通过发送代码来验证电子邮件,这就是我解决问题的方式:我创建了一个名为 Email_for_Verification 的模型,其中包含两个字段(电子邮件、代码)代码是随机生成的,我创建了一个实例模型当用户输入他的电子邮件时,我将生成的代码发送到电子邮件中,在第二步中,用户输入接收到的代码,我将使用名为:Verify_code 的视图进行验证。但我遇到了一个错误。 在创建 Email_for_Verification 实例时尝试向用户发送电子邮件时遇到此错误
'Request' object has no attribute 'email'
这是我的代码
Views.py
class Verify_code(APIView):
def post(self, request):
data = request.data
code = data.get('code')
email = data.get('email')
email_for_verification = models.Email_for_Verification.objects.get(email=email)
if code == email_for_verification.code:
return Response({"valid" : "Valid code", "email": email}, status=status.HTTP_200_OK)
else :
return Response({"invalid" : "Invalid code", "email": email}, status=status.HTTP_404_NOT_FOUND)
class EmailForVerificationView(CreateAPIView):
class EmailForVerificationView(CreateAPIView):
queryset = models.Email_for_Verification.objects.all()
serializer_class = EmailForVerificationSerializer
def create(self, request):
created = models.Email_for_Verification.objects.create(email=request.data['email']).save()
email=created.get('email')
code = created.get('code')
send_mail(
'Here is the code of verification',
code,
'dummy@mail.com',
[email],
fail_silently=True,
)
return Response({"code" : code, "email": email}, status=status.HTTP_200_OK)
模型.py
def generate_activation_code():
return int(''.join([str(random.randint(0,10)) for _ in range(6)]))
class Email_for_Verification(models.Model):
email = models.EmailField(
max_length=100, verbose_name='email', unique=True)
code = models.CharField(max_length=6, default=generate_activation_code)
序列化器.py
class EmailForVerificationSerializer(serializers.ModelSerializer):
class Meta:
model = Email_for_Verification
fields = '__all__'
【问题讨论】:
标签: python django django-models django-rest-framework django-views