如果我使用的是django-rest-auth,如何检查我的LoginView中的电子邮件是否经过验证?

时间:2018-09-06 09:52:41

标签: django rest django-rest-framework django-rest-auth

如果用户未验证电子邮件地址,我想显示另一条消息。

def post(self, request, *args, **kwargs):
    self.request = request
    self.serializer = self.get_serializer(data=self.request.data,
                                      context={'request': request})
    # print(self.request.data)
    # print(self.request.user)
    # print(self.request.data.email)
    email = self.request.data['email']

    # print(email)
    # if not request.user.email.verified:
    #     print("in verification")
    #     return Response({"message":"Please verify your email"})
    from allauth.account import app_settings
        if app_settings.EMAIL_VERIFICATION == app_settings.EmailVerificationMethod.MANDATORY:
            email_address = self.request.user.emailaddress_set.get(email=self.request.user.email)
            print(email_address)
            if not email_address.verified:
                return Response({"message":"Please verify your email id"})
    if self.serializer.is_valid():

        # print(self.serializer.errors)


        # print(self.serializer.data)
        response = super().post(request, *args, **kwargs)
        # print(self.request.user)
        email = self.request.user.email
        # print(email)

        if response.status_code == 200:
           self.save_header()
           return self.get_response()

用户模型(我在不同的表中可以看到用户是否已对其进行验证(Django-rest-auth提供了其他模型))

class User(AbstractUser):
"""User model."""

username = None
email = models.EmailField(_('email address'), unique=True)
mobile_token = models.CharField(max_length=20,blank=True,null=True)
U_ID = models.CharField(max_length=20,blank=True,null=True)
AI = models.IntegerField(default=0)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []

0 个答案:

没有答案