在Django项目中添加谷歌统计(Google Analytics)

Published: 2014-08-11

Tags: Django Python

本文总阅读量

原文:《Google Analytics tracking code into Django projects, the easy way》

对我来说,制作一个可扩展的Django应用随时可以添加谷歌统计实在是太难了。所以我写这篇文章作为快速手册,以便用于以后的Django Web开发时使用。

在Django项目中使用谷歌统计有两个前提条件:

  • 你需要拥有谷歌统计的ID和你网站的域名
  • 不能在settings.DEBUG模式下使用

设置变量

如下的一些变量需定义在setting.py文件中

GOOGLE_ANALYTICS_PROPERTY_ID

这个用来填写你的账户ID,形如:(e.g. UA-14845987-3)

GOOGLE_ANALYTICS_PROPERTY_ID = 'UA-14845987-3'

GOOGLE_ANALYTICS_DOMAIN

这个用来填写你的域名,这个域名必须是你的根域名。比如mydomain.com,而不是www.mydomain.com或是foo.mydomain.com这样的子域名

GOOGLE_ANALYTICS_DOMAIN = 'mydomain.com'

Context Processor

添加如下函数到你的上下文处理器文件中。

from django.conf import settings

def google_analytics(request):
    """
    Use the variables returned in this function to
    render your Google Analytics tracking code template.
    """
    ga_prop_id = getattr(settings, 'GOOGLE_ANALYTICS_PROPERTY_ID', False)
    ga_domain = getattr(settings, 'GOOGLE_ANALYTICS_DOMAIN', False)
    if not settings.DEBUG and ga_prop_id and ga_domain:
        return {
            'GOOGLE_ANALYTICS_PROPERTY_ID': ga_prop_id,
            'GOOGLE_ANALYTICS_DOMAIN': ga_domain,
        }
    return {}

在setting.py中加入context processor的信息

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'website.context_processors.google_analytics',
)

Template(模板)

我们需要添加谷歌给我们的统计代码到我们的模板中,就可以快乐的使用谷歌统计了。如下代码中的GOOGLE_ANALYTICS_PROPERTY_ID和GOOGLE_ANALYTICS_DOMAIN在先前我们的setting.py中填写,并且我们已经通过上面的上写文处理器能进行自动的替换成我们的设置。

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', '{{ GOOGLE_ANALYTICS_PROPERTY_ID }}', '{{ GOOGLE_ANALYTICS_DOMAIN }}');
  ga('send', 'pageview');

</script>

我们把它保存到模板目录的一个文件中,比如我把它保存为ga.html

Note:我使用的是新的谷歌统计代码。你可以在这里获取它。你也可以使用传统的谷歌统计代码来替换它(叫做ga.js)。事实上,你可以同时嵌入他们,并在链接中做些说明。

事实上,我们需要在每个页面都使用谷歌统计代码。那么需要编辑base.html模板,在它里面添加如下代码。仅当GOOGLE_ANALYTICS_PROPERTY_ID 被设置统计代码才会被包含。

{% if GOOGLE_ANALYTICS_PROPERTY_ID %}
  {% include "path/to/your/ga.html" %}
{% endif %}

记得把路径换成你自己的路径!

———————————————–

OK,就是这样, 添加谷歌统计代码还是挺简单的。不过可能去谷歌查看统计得锻炼锻炼身体了。本来觉得百度统计也还可以,最起码方便。但是这货竟然不支持Python Web……