Django 如果某人没有(例如)注册,我如何阻止他们登录?

Django 如果某人没有(例如)注册,我如何阻止他们登录?,django,Django,我使用的是django.contrib.auth.views.login,但我想阻止用户在设置了标志后登录,例如,他们尚未完成注册 我怎么能这样做呢 到目前为止,我只想到了在django.contrib.auth.views.login登录后检查恶意黑客的方法,并在重定向之前再次注销它们,而重定向实际上并没有打开。我建议查看一下auth用户模型上的is\u active布尔字段的文档。 根据文档,由您(开发人员)在视图或身份验证后端实现逻辑,以确定是否使用is\u active字段作为标志对用

我使用的是
django.contrib.auth.views.login
,但我想阻止用户在设置了标志后登录,例如,他们尚未完成注册

我怎么能这样做呢


到目前为止,我只想到了在django.contrib.auth.views.login登录后检查恶意黑客的方法,并在重定向之前再次注销它们,而重定向实际上并没有打开。

我建议查看一下auth用户模型上的
is\u active
布尔字段的文档。


根据文档,由您(开发人员)在视图或身份验证后端实现逻辑,以确定是否使用
is\u active
字段作为标志对用户进行身份验证。但是由于您使用的是
django.contrib.auth.views.login
view,默认表单
AuthenticationForm
为您检查
is\u active
标志,如果未设置
is\u active
标志,则应返回False。

我建议查看auth用户模型上
is\u active
布尔字段的文档。


根据文档,由您(开发人员)在视图或身份验证后端实现逻辑,以确定是否使用
is\u active
字段作为标志对用户进行身份验证。但是由于您使用的是
django.contrib.auth.views.login
view,默认窗体
AuthenticationForm
为您检查
是否处于活动状态
标志,如果未设置
是否处于活动状态
标志,则应返回False。

是否处于活动状态
是一个不错的选择,但我将执行自定义字段状态
(默认值为0)
。注册后
如果用户:
,则我将
发送邮件
以获得激活链接。如果用户单击注册链接,我将把状态更改为1

我将通过
(来自django.contrib.auth.forms导入身份验证表单)检查此状态。

更新:

好的,我假设您正在使用
django.contrib.auth.views.login
进行身份验证。在这种情况下,您可以使用
AuthenticationForm

url.py

forms.py


处于活动状态
是一个不错的选择,但我将执行自定义字段状态
(默认值为0)
。注册后
如果用户:
,则我将
发送邮件
以获得激活链接。如果用户单击注册链接,我将把状态更改为1

我将通过
(来自django.contrib.auth.forms导入身份验证表单)检查此状态。

更新:

好的,我假设您正在使用
django.contrib.auth.views.login
进行身份验证。在这种情况下,您可以使用
AuthenticationForm

url.py

forms.py


您可以将数据库中的ActivateAccount字段默认设置为0。然后,他们必须通过点击服务器将通过电子邮件发送的链接来激活该帐户。活动字段已经存在,将其用作标记是-我有此字段-问题是,如果此字段不正确,我如何使django登录过程拒绝该人登录?您可以有一个ActivateAccount字段,在数据库中,默认设置为0。然后,他们必须通过点击服务器将通过电子邮件发送的链接来激活帐户。活动字段已经存在,将其用作标记是-我有此字段-问题是,如果此字段不正确,我如何使django登录过程拒绝登录该人?我有一个类似的“自定义字段”位置。我还不知道如何让AuthenticationForm在允许某人登录之前检查它的状态。。。这就是我的问题。我更新了我的答案。。这可能对你有帮助。。让我知道。出于好奇,您是如何知道AuthenticationForm要覆盖此方法的?如果您发现我的答案对所问问题有用且合适,请接受。(我是通过一个类似的“自定义字段”了解这个方法的)地点。我还没有看到的是如何让AuthenticationForm在允许某人登录之前检查其状态…这就是我的问题所在。我更新了我的答案。它可能会帮助你。让我知道。出于好奇,你怎么知道AuthenticationForm有此方法可以覆盖?如果你发现我的答案对问题有用并且合适的话我问,请接受它
(r'^accounts/login/$', 'django.contrib.auth.views.login', authentication_form:PickyAuthenticationForm),
class PickyAuthenticationForm(AuthenticationForm):
    def confirm_login_allowed(self, user):
        if user.is_active:
            profileObj = Profile.objects.filter(pk=user.id)
            if profileObj.status == 1:
                print('welcome new user')
                pass
            else:
                print('Please verify email')