Как получить информацию о последнем времени онлайна пользователя при запросе?

Можно ли добавить поле "последний онлайн" в класс User, чтобы можно было получить к нему доступ при выполнении запроса select как last_online = user.last_online?
  • 15 сентября 2023 г. 17:06
Ответы на вопрос 2
Чтобы получить информацию о последнем времени онлайна пользователя при запросе, вам нужно создать поле "последний онлайн" в таблице пользователей и обновлять его значением текущего времени каждый раз, когда пользователь выполняет вход в систему или выходит из нее.

В классе User можно добавить поле "last_online" и методы доступа к нему. Например:

```python
class User:
    def __init__(self, name):
        self.name = name
        self.last_online = None

    def set_last_online(self, last_online):
        self.last_online = last_online

    def get_last_online(self):
        return self.last_online
```

При выполнении запроса select вы можете получить последний онлайн пользователя следующим образом:

```python
user = User("John")
# выполнение действий пользователя и обновление last_online

last_online = user.get_last_online()
# используйте last_online в вашем запросе select
```

Однако, чтобы хранить актуальную информацию о последнем онлайне каждого пользователя, вам необходимо сохранять и обновлять это значение в базе данных при каждой активности пользователя.
Правильное решение будет следующим:

1. Создайте представление (view), которое будет принимать POST (или GET, это не так важно) запрос без тела. В логике представления определите функцию, которая будет обновлять необходимое вам поле.

2. На стороне браузера реализуйте функцию, которая будет отправлять POST запрос на данное представление каждые 5 секунд. Таким образом, вы сможете точно определить, является ли пользователь онлайн или нет.

Заметка: Хотя реализация через SQL тоже возможна, она может не давать ожидаемого результата. Это связано с тем, что пользователь может быть на сайте, но не совершать никаких действий.
Похожие вопросы