我如何修改 django-tracking2 以便用户可以选择退出跟踪

How could I modify django-tracking2 so users can opt out of tracking

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

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

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

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

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

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

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