相关疑难解决方法(0)

如何判断用户的电子邮件地址是否已使用 Django、allauth、rest-auth 和自定义用户进行验证

我将 Django 2.0.10 与 rest-framework、rest-auth 和 allauth 一起使用。我有一个自定义用户模型。

我使用 allauth 视图进行了电子邮件验证。当用户注册时发送验证电子邮件。如果我单击电子邮件中的链接,我将被带到一个页面,其中有一个按钮可以单击以验证电子邮件。这一切都没有错误。但是我无法找出是什么这实际上。用户数据中的字段似乎没有改变。

我想要的行为是让用户能够注册和登录,但只能在他们验证电子邮件后才能向网站添加内容。

编辑:这篇文章给出了部分答案,但没有说明如何将验证状态保存为用户的属性,以便您在加载用户数据时可以在前端进行检查。

设置.py

# django rest auth
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
OLD_PASSWORD_FIELD_ENABLED = True
LOGOUT_ON_PASSWORD_CHANGE = False
ACCOUNT_EMAIL_VERIFICATION = 'optional'
Run Code Online (Sandbox Code Playgroud)

api/urls.py

from allauth.account.views import confirm_email

urlpatterns = [
    re_path(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', confirm_email,
     name='account_confirm_email'),
...
]
Run Code Online (Sandbox Code Playgroud)

用户/模型.py

import uuid 

from django.contrib.auth.models import AbstractUser, UserManager
from django.db import models
from django.utils.http import int_to_base36

class CustomUserManager(UserManager):
    def get_by_natural_key(self, username):
        case_insensitive_username_field = '{}__iexact'.format(self.model.USERNAME_FIELD)
        return self.get(**{case_insensitive_username_field: username}) …
Run Code Online (Sandbox Code Playgroud)

django email-confirmation django-allauth

6
推荐指数
2
解决办法
4375
查看次数

django-allauth:如何在电子邮件验证后将用户设置为活动状态

我主要使用django-allauth作为管理后端创建用户帐户的方法.我想要发生的是:

1)当用户完成注册程序时,发出验证电子邮件(我到目前为止工作)并将用户设置为非活动状态,工作人员,并通过defult分配给他们的"SurveyManager"组.目前,创建用户时将活动设置为true,将staff设置为false,并且不分配任何组.

2)单击电子邮件中的链接以验证其地址后,我希望将用户设置为活动状态,以便他们可以通过管理员后端登录.

我的具体问题是我不知道:1)如何或在何处设置用户的活动,人员和组的默认值 - 我想这可以在models.py文件中完成,但我的理解是用户模型包含在auth app中; 2)一旦电子邮件验证完成,如何触发代码将用户活动标志更改为true.

在此先感谢 - 如果这是一个创建不好的帖子,对不起,这是我的第一个!

django django-admin django-authentication django-allauth

4
推荐指数
1
解决办法
5273
查看次数