原文:《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,就是这样, 添加谷歌统计代码还是挺简单的。不过可能去谷歌查看统计得锻炼锻炼身体了。

[翻译]在Django项目中添加谷歌统计(Google Analytics)的更多相关文章

  1. Django项目中添加富文本编辑器django-ckeditor

    django-ckeditor库的使用步骤: 1.在命令行下安装django-ckeditor这个库: 命令:pip install django-ckeditor 2.安装成功后,配置Django项 ...

  2. Django 项目中添加静态文件夹

    在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件 在 index.html 文件中添加 <!DOCTYPE html> <html lang=" ...

  3. Django项目中"expected str, bytes or os.PathLike object, not list"错误解决:

    对于这个错误,也在于自己对django基础的掌握不是很牢固,忽略了MEDIA_ROOT的类型是string,而不是list. 错误的写法: MEDIA_ROOT = [ os.path.join(BA ...

  4. django项目中遇到要实现定时任务

    django项目中遇到要实现定时任务,所以选用了简单易用的django-crontab插件. 1.安装 django-crontab pip install django-crontab 2.定时要执 ...

  5. 【技术博客】JWT的认证机制Django项目中应用

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...

  6. celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

    一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...

  7. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  8. django web 中添加超链接

    django web 中添加不传参的超链接的方法如下: html: 在web中的超链接中加入一下url <a href="{% url 'app_name.views.url_func ...

  9. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

随机推荐

  1. POJ 3280 间隔DP

    字符串,每次插入或删除字符需要一定的价格,问:我怎样才能使这个字符串转换成字符串回文,花最少. 间隔DP 当DP到区间[i,j+1]时,我们能够在i-1的位置加入一个str[j+1]字符,或者将在j+ ...

  2. oracle_单向函数_数字化功能

    oracle_单向函数_数字化功能 1.abs(x)   为了获得x绝对值 2.ceil(x)   用于获得大于或等于x的最小整数. 3.floor(x)   用于获得小于或等于x 4.mod(x,y ...

  3. SSH深度历险(三) EJB Session Bean有状态和无状态的差别与联系

    刚開始对两种sessionbean存在误解.觉得有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用.而觉得无状态是每次调用实例化一次,不保留用户信息.细致分析并用实践检验后,会发现,事实 ...

  4. Android通过意图使用内置的音频播放器

    假设实现一个音频文件的播放,那么在应用程序中提供播放音频文件功能的最简单的方式是利用内置的"Music(音乐)"应用程序的功能--即使用系统自带的或已安装好的音乐播放器来播放指定的 ...

  5. PC结束 Spark 二次开发 收到自己主动,并允许好友请求

    本次Spark二次开发是为了客服模块的开发, 能让用户一旦点击该客服则直接自己主动加入好友.而客服放则需自己主动加入好友,不同弹出对话框进行允许,这方便的广大客服. 如今废话不多说,直接上代码. pa ...

  6. OpenCV功能界面和示例

    OpenCV2.4.9 API Reference http://docs.opencv.org/modules/refman.html 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  7. HDInsight HBase概观

    HDInsight HBase概观 什么是HBase的? HBase它是基于HadoopApache开源NoSQL数据库.它提供了很多非结构化和半结构化数据一致性的随机存取能力的.它是仿照谷歌的Big ...

  8. 编程算法基地-2.1利用字符串API

    2.1利用字符串API 字符串是Java类型最常用.并且是复合类型 串非常经常用于,其最佳API熟悉文档. 推断串中有没有反复的字符 String s ="abcdebxyz"; ...

  9. php异或加密解密算法的实现

    function xor_enc($str,$key) { $crytxt = ''; $keylen = strlen($key); for($i=0;$i<strlen($str);$i++ ...

  10. poj 2565 Ants (KM+思维)

    Ants Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4125   Accepted: 1258   Special Ju ...