使用Django部署Google Analytics

Dan*_*ins 27 python deployment django google-analytics

我们即将部署一个新的Django网站,我们希望使用Google Analytics来跟踪网站上的流量.但是,我们不希望开发实例上的所有匹配都对Google Analytics统计信息做出贡献.

我们有几种方法可以解决这个问题:

  • 在settings.py中有一个配置选项,基本模板用它来决定是否包含适当的<script>元素,
  • 在部署到生产服务器之前维护一个分支,我们确保包含<script>元素,
  • 使用Google Analytics执行某些操作来阻止对127.0.0.1或localhost的匹配,或者
  • 别的.

第一种选择似乎是最明智的,但我不确定是不是.例如,我们是否必须开始将google_analytics变量传递到我们的所有视图中?

你的想法是什么?

Ned*_*der 44

首先,创建一种让开发和生产服务器从不同文件中提取设置的方法,例如dev.py和prod.py. 有很多方法可以做到这一点.

然后,创建一个设置GOOGLE_ANALYTICS_KEY.在dev.py中将其设置为空字符串.在prod.py中,将其设置为您的密钥,例如"UA-124465-1".创建一个上下文处理器,将此设置添加到您的所有模板上下文中GOOGLE_ANALYTICS_KEY,或者只是继续添加您的设置模块.然后,在您的模板中,使用它有条件地包含您的分析代码:

{% if settings.GOOGLE_ANALYTICS_KEY %}
<script> blah blah {{settings.GOOGLE_ANALYTICS_KEY}} blah blah </script>
{% endif %}
Run Code Online (Sandbox Code Playgroud)


mik*_*ikl 12

派对有点晚了,但有一个名为django-google-analytics的可重复使用的Django应用程序.最简单的使用方法是:

  1. google_analytics应用程序添加到您的INSTALLED_APPS部分settings.py.
  2. 在您的基本模板中,通常是a base.html,在最顶部插入此标记:{% load analytics %}
  3. 在同一模板中,在结束正文标记之前插入以下代码:{% analytics "UA-xxxxxx-x" %}UA-xxxxxx-x是您域名的唯一Google Analytics代码.


wor*_*ogy 8

我的解决方案采用了与Ned首选答案类似的方法,但将分析代码分离为自己的模板.我更喜欢这个,所以我可以将模板从项目复制到项目.

这是我的context_processor文件的片段:

from django.conf import settings
from django.template.loader import render_to_string

def analytics(request):
    """
    Returns analytics code.
    """
    if not settings.DEBUG:
        return { 'analytics_code': render_to_string("analytics/analytics.html", { 'google_analytics_key: settings.GOOGLE_ANALYTICS_KEY }) }
    else:
        return { 'analytics_code': "" }
Run Code Online (Sandbox Code Playgroud)

当然,你需要告诉Django在你的上下文中包含它.在您的settings.py文件中,包括:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    "context_processors.analytics",
)
Run Code Online (Sandbox Code Playgroud)

我将其设置为仅在DEBUG设置为False时包含分析代码,但您可能更喜欢将其关键字关闭,也许完全是新设置.我认为DEBUG是一个很好的默认值,因为它假设你不想在调试/开发时跟踪任何命中.

使用您的Google Analytics代码创建设置:

GOOGLE_ANALYTICS_KEY = "UA-1234567-8"
Run Code Online (Sandbox Code Playgroud)

创建一个名为"analytics/analytics.html"的模板,其中包含以下内容:

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("{{ google_analytics_key }}");
pageTracker._trackPageview();
} catch(err) {}</script>
Run Code Online (Sandbox Code Playgroud)

最后,在base.html模板中的结束标记之前,添加以下内容:

{{ analytics_code }}
Run Code Online (Sandbox Code Playgroud)

现在,只有在DEBUG = False时才会包含您的分析代码.否则,将不包括任何内容.


Mar*_*ian 5

所有这些其他解决方案都可以使用,但它们现在都是矫枉过正,因为您可以轻松地在Google Analytics中设置过滤器,以过滤掉未来自您的生产网站或网站的所有流量.请参阅GA帮助中的创建/管理配置文件过滤器.没有代码的解决方案只会让每个人的生活更轻松.

注意:有两个警告

  1. 这不适用于实时过滤,因为没有过滤器实时应用(截至2012年7月 - 检查他们的文档)
  2. 您必须是Google Analytics帐户的管理员才能对其进行设置