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
)
Создайте модель для хранения действий пользователя. ОП захочет, чтобы модель действий имела как минимум два поля -
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)
Создайте способ хранения действий пользователя.
def store_user_action(user, action): action = Action(user=user, action=action) action.save()
Тогда, если мы хотим сохранить, когда пользователь изменил пароль, мы перейдем к
view
, который имеет дело с изменением пароля, и вызовем наш методstore_user_action(request.user, 'changed password')
при успехе.Чтобы затем визуализировать действия пользователя, ОП может просматривать записи в Django Admin, создавать представления и шаблоны, ... Существуют различные возможности.