在我的 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)
