0

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

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

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

4

1 回答 1

0

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

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

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

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

于 2020-05-31T02:58:10.267 回答