【问题标题】:Django: How to create a user action log/trace with vizualizationDjango:如何使用可视化创建用户操作日志/跟踪
【发布时间】:2022-09-25 18:11:14
【问题描述】:

我正在寻找一种工具来跟踪用户操作,例如:

  • 用户登录
  • 用户更改密码
  • 用户通过电子邮件收到账单
  • 用户登录
  • 用户上传图片
  • 用户发送消息 ... 我可以将其包含在我的 Django 项目中。之后我想构建查询并询问系统内容,例如:
  • 用户在一个月内多久发送一次消息
  • 一个月内用户登录的频率
  • 用户是否上传了任何图片

我想要某种界面。 (如谷歌分析)

任何想法?我很确定这是一项常见的任务,但我找不到这样的东西。

  • 也许this answer 可能有更多资源可以帮助您

标签: django event-tracking


【解决方案1】:

有很多方法可以实现这一目标。尝试先阅读this link。此外,您可以使用LogEntry 来跟踪您拥有的模型的创建、删除或更改。此外,它会在管理面板中向您显示您需要的信息,或者您也可以使用其他一些第三方软件包。
或者您可能想创建自己的模型来为您的应用程序创建日志,this link 可能会帮助您,但不要重新发明轮子并分析您的情况。

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)我不想将用户操作存储在 django 日志中,因为我想经常查询有关用户的信息。 2) 在使用 LogEntry 时,我在哪里可以在管理面板中查看有关用户的信息? 3)我知道我可以自己构建一些东西,但我认为这是一项常见的任务,并且有一些可以使用的东西。
【解决方案2】:
  1. 创建一个模型来存储用户操作。 OP 将希望 Action 模型至少有两个字段 - 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. 然后可视化用户操作,OP 可以在 Django Admin 中查看记录,创建视图和模板,......有不同的可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多