python - 如何在 django 中添加倒数计时器作为用户字段?
问题描述
我希望应用程序上的每个用户都有一个特定时间的字段,在使用网站时会用完。因此,如果您有一个 10 小时的帐户,则有一个字段可以倒计时这 10 小时。有没有现有的方法可以做到这一点并不断更新?
现在我有一个带有 time_left 字段的自定义模型:
class User(AbstractBaseUser, PermissionsMixin):
"""
Custom user class which overrides the default user class.
"""
email = models.EmailField(max_length=254, unique=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
time_left = models.TimeField(default=datetime.time(0, 0))
然后我有一个上下文处理器来显示 time_left:
def time_left(request):
time = datetime.time(0, 0)
if request.user.is_authenticated:
user = User.objects.get(email=request.user.email)
time = user.time_left
print(time)
return {'time_left': time}
编辑:考虑一下,更新页面本身剩余时间的唯一方法可能是 JQuery 和 AJAX。我在这个假设中正确吗?不过,仍然需要更新后端的号码。
解决方案
如果您只想要 10 小时倒计时显示,我不认为每秒通过 AJAX 从后端请求时间是有效的 - 最简单的方法可能是获取该时间左变量一次(使用time_left
服务器端的函数,然后使用 javascript在页面上倒计时。
您可以查看此页面https://www.w3schools.com/howto/howto_js_countdown.asp了解如何在 JS 中显示倒数计时器,然后只需替换该行
var countDownDate = new Date("Jan 5, 2021 15:37:25").getTime();
使用从服务器获取剩余时间的 ajax 代码。
但是,如果您想限制用户在网站上的停留时间,唯一的方法是使用 javascript(是的,每秒通过 GET/POST 请求使用 AJAX 更新它),但这可以绕过用户在创建帐户后使用网站时只需禁用 js。
推荐阅读
- r - 返回不需要的多个值的函数
- firebase - 通过屏幕加载时的颤动在 Firestore 中创建文档、子集合
- javascript - 如何从单独的 jsx 文件中设置标题的背景图像?
- javascript - 拖放后更新array2的状态,更新作为拖放源的array1
- javascript - 为什么fetchmock restore会给出无与伦比的get?
- elasticsearch - 多匹配查询分页
- javascript - 减少和求和对象条目数组
- javascript - 如何通过 html 或 javascript 在 chrome 中打开翻译对话框
- mysql - 我应该使用视图进行固定条件查询吗?
- spring-boot - 使用 gradle 的 OutOfMemoryError