Skip to main content
 首页 » 编程设计

python之Django之暂停/停用帐户 N 秒

2024年11月01日33飞鱼

在我的 Django 应用程序中,如果用户输入错误密码超过 7 次,那么我想暂停/停用他们的帐户 10 秒。

我执行一个 If 语句来查看输入错误密码的次数是否超过 7 次,结果正常。

在 if 语句中,我想将 user.is_active 设置为 False 10 秒,这样他们就无法登录。 10 秒后,我希望将 user.is_active 设置回 True,以便他们可以再次尝试登录。

我将如何实现此功能?谢谢。

更新 - View .py:

if user.active_after > current: 
                    return JsonResponse({'message': 'Yes! Not locked'}, status=200) 

模型.py

active_after = models.DateTimeField(auto_now=True) 

我收到的错误: TypeError:无法比较原始偏移和偏移感知日期时间

有人知道如何解决这个问题吗?

请您参考如下方法:

一种方法是在前端阻止用户(即使用 javascript,....)。如果你也想在后端添加,你可以添加 datetime 字段,例如 user.active_after ,每个模型应该只在那个时间之后激活。

然后当您输入错误密码时,您可以将该字段更改为:

current =  datetime.datetime.now() 
 
# add 10 seconds to current time 
user.active_after = current + datetime.timedelta(0,10)