当表单在 Django 中有效时触发 google 分析事件

Trigger google analytics event when form is valid in django

我的网站上有一个表单,其他表单用作基础(并且位于不同的 url 上)但它们都做同样的工作,创建用户。

我在想 python/django 可以在表单有效时将特定事件推送到 google 分析。

class FormBase(FormView):


    def form_valid(self, form): 


        #push to google analytics

        #_gaq.push(['_setAccount', 'UA-12345-1']);
        #_gaq.push(['_trackPageview', '/home/landingPage']);


        return super(FormBase, self).form_valid(form)

这可能吗?将服务器端与客户端相对应是否有任何注意事项 (javascript)

分析跟踪通常在页面上使用 Javascript 完成,表单验证通常是服务器端工作。您的示例似乎混合了 Javascript 和 Python 代码,当然,这些代码是行不通的。

最常见的情况是您只想在感谢页面触发事件,使用常见的 Javascript。使用 Django 很容易做到,您只需要小心,每次使用该表单时,它都会验证您是否将用户发送到相同的感谢页面,您在该页面中使用了您构建的具有事件触发代码的自定义模板。

可以使用 measurement protocol 在服务器端执行此操作。但有几件事你必须要小心:

1) 使用测量协议

测量协议仅定义 HTTP 请求,没有客户端库(至少是官方库),因此您必须自己创建和 运行 查询。这会给您的项目增加不必要的复杂性。

2) 迁移到 Universal Analytics

在您的示例中,您似乎使用了经典分析。 Google Analytics 将他们的跟踪代码升级为一种名为 Universal Analytics 的新语法。测量协议仅支持 Universal Analytics,因此如果您要使用测量协议,您还应该将所有站点跟踪代码升级到 Universal,以便从 client/server 端发送的匹配是兼容的。

3) 延迟

测量协议可能需要几毫秒才能回答。如果您这样做了数百万次,等待 HTTP 响应可能会成为瓶颈,从而延迟您的例程。您可能希望使用 celery 或类似的东西在异步任务中创建并发出此 HTTP 请求。

4) Session 继续

Google Analytics 在客户端使用 cookie 来存储客户端 ID,用于了解它是跨多个请求的同一用户。因此,您希望使用相同的 cid 从服务器端发出请求。这将允许 GA 将 link javascript 与用户在网站上进行的其他点击相结合。所以你需要获取 _ga cookie,解析它并提取请求中使用的 cid。除了 cid 之外,您还想从真实用户中提取 userIp 和 userAgent 以使用测量协议发送您的请求,GA 使用这些来创建地理报告和 Browser/OS 报告。

如您所见,这需要大量工作,如果您真的必须在服务器端跟踪它,也许这是值得的。但是,如果您不一定非要这样做,那么坚持基本原则可能会更好,只需使用 Javascript。

我发现使用 this library to implement the Measurement Protocol 是使用 Python/Django.

实现服务器端 Google 分析事件的最简单方法

代码为:

from UniversalAnalytics import Tracker

tracker = Tracker.create('UA-XXXXXX-Y')
tracker.send('event', 'category', 'action')