Мое решение использует аналогичный подход к предпочитаемому ответу Неда, но отделяет аналитический код от собственного шаблона. Я предпочитаю это, поэтому могу просто скопировать шаблон из проекта в проект.
Вот отрывок из моего файла 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': "" }
Конечно, вы должны сказать Django, чтобы включить это в вашем контексте. В ваших настройках.пй файл, включает в себя:
TEMPLATE_CONTEXT_PROCESSORS = (
...
"context_processors.analytics",
)
Я его настроить, чтобы включить код аналитики только тогда, когда DEBUG установлен в значении False, но вы можете предпочесть ключ его от чего-то еще, возможно, новой установки в целом. Я думаю, что DEBUG является хорошим дефолтом, поскольку предполагает, что вы не хотите отслеживать любые удары при отладке/разработке.
Создать настройку с помощью вашего Google Analytics Key:
GOOGLE_ANALYTICS_KEY = "UA-1234567-8"
Создать шаблон под названием: "Аналитика/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>
Наконец, перед закрывающий тег в вашем шаблоне base.html, добавьте это:
{{ analytics_code }}
Теперь ваш код аналитики будет включен только тогда, когда DEBUG = False. В противном случае ничего не будет включено.
Спасибо, Нед, я ожидал, что это будет путь. :) –