Django: Как создать журнал/трассировку действий пользователя с визуализацией

Я ищу инструмент для отслеживания действий пользователя, таких как:

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

и я хотел бы иметь какой-то интерфейс. (Например, google analytics)

Есть идеи? Я почти уверен, что это обычная задача, но я не смог найти ничего подобного.

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

from django.contrib.admin.models import LogEntry, ADDITION

LogEntry.objects.log_action(
    user_id=request.user.pk,
    content_type_id=get_content_type_for_model(object).pk,
    object_id=object.pk,
    object_repr=force_text(object),
    action_flag=ADDITION
)
  1. Создайте модель для хранения действий пользователя. ОП захочет, чтобы модель действий имела как минимум два поля - user (FK к модели пользователя) и action (действие пользователя).

    from django.db import models
    
    class Action(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        action = models.CharField(max_length=255)
    
  2. Создайте способ хранения действий пользователя.

    def store_user_action(user, action):
        action = Action(user=user, action=action)
        action.save()
    
  3. Тогда, если мы хотим сохранить, когда пользователь изменил пароль, мы перейдем к view, который имеет дело с изменением пароля, и вызовем наш метод store_user_action(request.user, 'changed password') при успехе.

  4. Чтобы затем визуализировать действия пользователя, ОП может просматривать записи в Django Admin, создавать представления и шаблоны, ... Существуют различные возможности.

Вернуться на верх