【问题标题】:How could I modify django-tracking2 so users can opt out of tracking我如何修改 django-tracking2 以便用户可以选择退出跟踪
【发布时间】:2020-09-18 06:39:34
【问题描述】:

我现在正在制作一个网站,需要使用django-tracking2 进行分析。一切正常,但我想允许用户选择退出,我还没有看到任何选项。我在想修改中间件部分可能会起作用,但老实说,我不知道该怎么做,因为我以前没有写过中间件。

我尝试编写脚本来检查名为 no_track 的 cookie,如果未设置,我会将其设置为 false 以进行默认跟踪,如果他们拒绝,则将 no_track 设置为 True 但我不知道在哪里实现它(除了中间件,当我尝试服务器告诉我联系管理员时)。我在想也许我可以使用信号来防止用户被跟踪,但这会减慢网页速度,因为它必须处理防止每个页面上出现新的访问者实例(因为它可能会继续创建新实例,因为它看起来像一个新用户)。我可以继承 Visitor 类并修改 __init__ 以检查 cookie 并让它保存或不保存。

感谢任何答案,如果我找到解决方案,我会编辑帖子或帖子并接受答案,以防其他人需要。

【问题讨论】:

    标签: django django-models analytics django-middleware django-packages


    【解决方案1】:

    我在我的工具文件中创建了一个函数(包含整个项目中使用的所有函数,以使我的生活更轻松)来获取和设置会话密钥。在VisitorTrackingMiddleware 中,我使用了_should_track() 函数并放置了一个检查会话密钥(在_should_track() 检查会话是否已安装之后,在所有其他检查之前),在我的工具文件中使用check_session() 函数,如果它不存在,该函数会使用默认值 True 来创建它(跟踪用户,直到他们接受或拒绝)并返回一个 HttpResponse(尝试使用 cookie 方法后留下的)。

    当我使用cookie方法时,firefox控制台说cookie会过期所以我只是切换到会话另一个原因是django-tracking2在它上面运行。

    它似乎工作得很好,并且对加载时间没有太大影响,每次发出请求时,该函数都会运行,我的调试会告诉我它是否在跟踪我,并且所有按钮都可以正常工作阿贾克斯。我想运行一些测试,看看这是否确实有效,如果是这样,也许我会向 django-tracking2 提交一个拉取请求,以防其他人想要使用它。

    这样做的一大优势是,您可以允许用户根据需要改变主意,或者您可以在用户注册时根据他们是否接受而重新提示。 check_session()的设置方式,我也可以在模板标签和类方法中使用。

    【讨论】:

    • 这是旧的,但这很重要,当用户删除他们的帐户跟踪将引发错误。为了解决这个问题,我们必须为新会话创建一个新的访问者对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多