当前,管理员(超级用户)正在创建用户,并通过电子邮件将详细信息以及重置密码链接发送给用户。用户将单击“重置密码”链接并在那里更改密码。
现在,管理员必须在重置密码后知道用户是否已登录系统。必须以活动用户(已登录用户)或非活动用户(尚未登录用户)的身份通知管理员。
我是Django的新手,不知道如何确定用户是否已登录。
在Ralf建议之后,这就是我的代码的样子
我已将is_register的默认值设置为False,并且在html中显示为无效。用户登录后,必须将非活动状态更改为活动状态。
models.py
class RegisterUser(models.Model):
#user = models.OneToOneField(User, on_delete=models.CASCADE)
email = models.EmailField(blank=True, null=None)
first_name = models.CharField(max_length=50, default=None)
last_name = models.CharField(max_length=50, default=None)
is_active = models.BooleanField(_('active'), default =True)
is_register = models.NullBooleanField(_('register'), default=False, null=True)
program = models.CharField(max_length=50, default='Test')
vews.py
@login_required
def users(request):
re = RegisterUser
registeredUsers = User.objects.all()
reg = User.last_login
if reg is not None:
re.is_register = False
else:
re.is_register = True
return render(request, 'account/viewUsers.html', {'registeredUsers' : registeredUsers,
'reg' : reg })
user.html
{% for RegisteredUser in RegisteredUsers %}
<tr>
<td>{{ RegisteredUser.first_name }}</td>
<td>{{ RegisteredUser.last_name }}</td>
<td>{{ RegisteredUser.email }}</td>
{% if RegisteredUser.is_active %}
<td><button type="button" class="btn btn-lg btn-primary" disabled>Active</button></td>
{% else %}
<td><button type="button" class="btn btn-lg btn-primary" disabled>Inactive</button></td>
{% endif %}
{% if RegisterUser.is_register %}
<td><button type="button" class="btn btn-lg btn-primary" disabled>Active</button></td>
{% else %}
<td><button type="button" class="btn btn-lg btn-primary" disabled>Inactive</button></td>
{% endif %}
尽管用户已登录,但我仍然在html页面上看到该注册无效。
答案 0 :(得分:3)
Django User
模型有一个last_login
的DateTimeField
。
您可以使用此字段获取所需的信息。
超级用户通过管理面板创建用户后,字段last_login
将为None
,直到成功登录为止。
因此,User.objects.filter(last_login__isnull=True)
为您提供了所有从未登录过的已创建用户。
在修改问题之后:
User
模型而不是您自己的模型,因为您建议的字段实际上已经存在。reg = User.last_login
行是不正确的,因为应该为每个用户实例而不是类对象检查last_login
字段。在您的视图中尝试以下操作:
@login_required
def users(request):
return render(
request,
'account/viewUsers.html',
{'all_users': User.objects.all()})
这在您的模板中:
{% for u in all_users %}
<tr>
<td>{{ u.first_name }}</td>
<td>{{ u.last_name }}</td>
<td>{{ u.email }}</td>
<td>
<button type="button" class="btn btn-lg btn-primary" disabled>
{% if u.is_active %}Active{% else %}Inactive{% endif %}
</button>
</td>
<td>
<button type="button" class="btn btn-lg btn-primary" disabled>
{% if u.last_login is None %}
Never logged in
{% else %}
Has last logged in on {{ u.last_login }}
{% endif %}
</button>
</td>
</tr>
{% endfor %}