Dan*_*ins 27 python deployment django google-analytics
我们即将部署一个新的Django网站,我们希望使用Google Analytics来跟踪网站上的流量.但是,我们不希望开发实例上的所有匹配都对Google Analytics统计信息做出贡献.
我们有几种方法可以解决这个问题:
<script>元素,<script>元素,第一种选择似乎是最明智的,但我不确定是不是.例如,我们是否必须开始将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应用程序.最简单的使用方法是:
google_analytics应用程序添加到您的INSTALLED_APPS部分settings.py.base.html,在最顶部插入此标记:{% load analytics %}{% analytics "UA-xxxxxx-x" %}这UA-xxxxxx-x是您域名的唯一Google Analytics代码.我的解决方案采用了与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时才会包含您的分析代码.否则,将不包括任何内容.
| 归档时间: |
|
| 查看次数: |
14154 次 |
| 最近记录: |