在Django中,要确定用户何时有空闲超时,可以使用一个名为last_activity
的字段来记录用户的最后活动时间。然后,您可以设置一个定时任务来检查用户的最后活动时间,并在超过预定义的空闲超时时间后执行相应的操作。
以下是一个简单的示例:
last_activity
字段。from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class CustomUserManager(BaseUserManager):
pass
class CustomUser(AbstractBaseUser):
email = models.EmailField(unique=True)
last_activity = models.DateTimeField(auto_now=True)
objects = CustomUserManager()
USERNAME_FIELD = 'email'
last_activity
字段。from django.http import HttpResponse
class LastActivityMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.user.is_authenticated:
request.user.last_activity = timezone.now()
request.user.save(update_fields=['last_activity'])
response = self.get_response(request)
return response
settings.py
中添加中间件。MIDDLEWARE = [
# ...
'myapp.middleware.LastActivityMiddleware',
# ...
]
from django.core.management.base import BaseCommand
from django.utils import timezone
from myapp.models import CustomUser
class Command(BaseCommand):
def handle(self, *args, **options):
idle_timeout = 30 * 60 # 30 minutes
idle_users = CustomUser.objects.filter(last_activity__lte=timezone.now() - timezone.timedelta(seconds=idle_timeout))
for user in idle_users:
# 执行相应的操作,例如将用户从在线状态更改为离线状态
user.is_online = False
user.save(update_fields=['is_online'])
这个示例中,我们使用了一个中间件来更新用户的last_activity
字段,并创建了一个定时任务来检查用户的空闲时间。当用户空闲超时时,定时任务将执行相应的操作。
请注意,这个示例仅供参考,您可能需要根据您的具体需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云