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



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

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

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

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

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

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

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

最新更新