django rest auth:电子邮件验证的目的是什么?如何让用户正确激活帐户?
我可能误解了什么django rest auth:电子邮件验证的目的是什么?如何让用户正确激活帐户?,django,django-rest-framework,django-rest-auth,Django,Django Rest Framework,Django Rest Auth,我可能误解了什么django rest auth提供了RegisterView,用户注册后,应该向用户的电子邮件发送一封电子邮件。但是,我注意到,即使在用户确认电子邮件之前,用户就已经注册了is_active=True。那么,电子邮件验证的目的是什么?当用户向站点注册时,我是否必须重写某些内容并使用is_active=False创建用户?如果是这样,我如何才能正确地实现它?我有麻烦了 这就是我所做的 url.py path('api/v1/rest-auth/registration/', in
django rest auth
提供了RegisterView
,用户注册后,应该向用户的电子邮件发送一封电子邮件。但是,我注意到,即使在用户确认电子邮件之前,用户就已经注册了is_active=True
。那么,电子邮件验证的目的是什么?当用户向站点注册时,我是否必须重写某些内容并使用is_active=False
创建用户?如果是这样,我如何才能正确地实现它?我有麻烦了
这就是我所做的
url.py
path('api/v1/rest-auth/registration/', include('rest_auth.registration.urls')),
from rest_auth.registration.serializers import RegisterSerializer
class CustomRegistrationSerializer(RegisterSerializer):
def save(self, request):
user = super(CustomRegistrationSerializer, self).save(request)
user.is_active = False
return user
REST_AUTH_REGISTER_SERIALIZERS = {
'REGISTER_SERIALIZER': 'appname.serializers.CustomRegistrationSerializer',
}
serializers.py
path('api/v1/rest-auth/registration/', include('rest_auth.registration.urls')),
from rest_auth.registration.serializers import RegisterSerializer
class CustomRegistrationSerializer(RegisterSerializer):
def save(self, request):
user = super(CustomRegistrationSerializer, self).save(request)
user.is_active = False
return user
REST_AUTH_REGISTER_SERIALIZERS = {
'REGISTER_SERIALIZER': 'appname.serializers.CustomRegistrationSerializer',
}
settings.py
path('api/v1/rest-auth/registration/', include('rest_auth.registration.urls')),
from rest_auth.registration.serializers import RegisterSerializer
class CustomRegistrationSerializer(RegisterSerializer):
def save(self, request):
user = super(CustomRegistrationSerializer, self).save(request)
user.is_active = False
return user
REST_AUTH_REGISTER_SERIALIZERS = {
'REGISTER_SERIALIZER': 'appname.serializers.CustomRegistrationSerializer',
}
这是我遇到的一个错误
文件“rest_auth/registration/views.py”,第46行,发送
返回超级(RegisterView,self).dispatch(*args,**kwargs)
文件“/rest\u framework/views.py”,第495行,在分派中
响应=自身处理异常(exc)
文件“rest\u framework/views.py”,第455行,在handle\u exception中
自举未捕获异常(exc)
文件“rest_framework/views.py”,第492行,在分派中
响应=处理程序(请求、*args、**kwargs)
文件“rest_framework/generics.py”,第192行,在post中
返回self.create(请求、*args、**kwargs)
文件“rest_auth/registration/views.py”,第65行,在create中
user=self.perform\u create(序列化程序)
文件“rest\u auth/registration/views.py”,第81行,在perform\u create中
(无)
文件“allauth/account/utils.py”,第183行,完整注册
信号(kwargs=信号(kwargs)
文件“/allauth/account/utils.py”,第133行,执行登录
返回适配器。响应用户不活动(请求,用户)
文件“allauth/account/adapter.py”,第454行,在response\u user\u inactive中
冲销(“账户未激活”)
文件“django/url/resolvers.py”,第622行,在带有前缀的_reverse_中
提升NoReverseMatch(msg)
django.url.exceptions.NoReverseMatch:找不到“account_inactive”的反向帐户“”不是有效的视图函数或模式名称
我想听听使用django rest auth
的人是如何处理注册的。
有人使用过django rest auth并能给我一些提示吗?
处于活动状态
实际上不用于此目的。当我不想删除某个用户时,我将其用作管理员来停用该用户。您可能希望改用帐户\u电子邮件\u验证=“必需”
:
帐户\电子邮件\验证(“可选”)
确定注册过程中的电子邮件验证方法–从中选择“必需的”
,中选择“可选的”
,或中选择“无”
。当设置为“强制”时,在验证电子邮件地址之前,将阻止用户登录。选择“可选”或“无”以允许使用未验证的电子邮件地址登录。在“可选”的情况下,仍然发送电子邮件验证邮件,而在“无”的情况下,不发送电子邮件验证邮件
资料来源:
许多网站需要双重选择以验证电子邮件地址的有效性或出于法律目的,您可以通过引用设置来实现这一点
关于
NoReverseMatch
异常,您应该能够用以下代码解决它(但我认为当您切换到ACCOUNT\u EMAIL\u VERIFICATION=“mandatory”
时,您可能不需要它):
urlpatterns=[
...
url(r“^accounts/”,包括('allauth.url'),
...
]
文件:
但是,如果Django只是一个后端,您可能不需要这个视图,也不想覆盖它。为了了解如何做到这一点,您可以查看my where,我还重写了适配器,因为有一个URL我不需要。django rest auth通过使用一个额外的表来处理电子邮件,该表包含电子邮件帐户和一个标记(如果它们是否经过验证)
它从中吸取了这一点。完全不同意你答案的第一部分。是活动的,应该正好满足这个目的。如果您不使用它,则没有任何状态或数据库记录指示用户是否验证了其邮件。
处于活动状态
字段不仅仅是电子邮件验证确认标志,它是django.contrib.auth
的一部分。我会添加我自己的自定义is\u email\u verified
字段,并在email\u confirled
信号上将其设置为True,或者使用django allauth的EmailAddress.objects.filter(user=self.request.user,verified=True)。exists()
在视图中检查。