Развертывание Google Analytics With Django

Мы собираемся развернуть новый веб-сайт Django, и мы хотим использовать Google Analytics для отслеживания движение на сайте. Однако мы не хотим, чтобы все хиты на экземплярах разработки способствовали статистике Google Analytics.

Существует несколько способов, которыми мы могли иметь дело с этим:

  • имейте параметр конфигурации в settings.py, который основное шаблонное использование решить, включать ли соответствующее <script> элементы,
  • поддержите ответвление, в которое мы вытягиваем прежде, чем развернуться к рабочему серверу, который мы гарантируем, включает <script> элементы,
  • сделайте что-то с Google Analytics для блокирования хитов к 127.0.0.1 или localhost, или
  • что-то еще.

Первая опция кажется самым разумным, но я не уверен, ли это. Например, был бы, мы должны начать передавать a google_analytics переменная во все наши представления?

Каковы Ваши мысли?

27
задан Daniel Watkins 10 March 2009 в 11:09
поделиться

6 ответов

Во-первых, создайте способ иметь Ваши серверы разработки, и рабочие серверы вытягивают настройки из различных файлов, говорят 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 %}
44
ответ дан Ned Batchelder 14 October 2019 в 12:49
поделиться

Я главным образом соглашаюсь с Ned, хотя у меня есть единственная установка под названием IS_LIVE_SITE, который переключает код аналитики, объявления и несколько других вещей. Таким образом, я могу сохранить все ключи в подрывной деятельности (поскольку это - боль для поиска их), и все еще переключите их на или прочь легко.

2
ответ дан Andrew Wilkinson 14 October 2019 в 12:49
поделиться

У Вас есть шаблонные процессоры контекста, которые могут использоваться для передачи значений всем шаблонам, не обновляя все представления.

http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

0
ответ дан S.Lott 14 October 2019 в 12:49
поделиться

Вместо включения тега script непосредственно в Вашем HTML, просто измените аналитику JavaScript, таким образом, это только работает, если href не содержит Ваше название сайта напоминания. Это будет работать без любой дополнительной конфигурации.

2
ответ дан lacker 14 October 2019 в 12:49
поделиться

My solution takes a similar approach to Ned's preferred answer, but separates the analytics code into its own template. I prefer this, so I can just copy the template from project to project.

Here's a snippet from my context_processor file:

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': "" }

Of course you'll need to tell Django to include this in your context. In in your settings.py file, include:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    "context_processors.analytics",
)

I have it set up to include the analytics code only when DEBUG is set to False, but you may prefer to key it off something else, perhaps a new setting altogether. I think DEBUG is a good default since it supposes you don't want to track any hits while debugging/developing.

Create a setting with your Google Analytics Key:

GOOGLE_ANALYTICS_KEY = "UA-1234567-8"

Create a template called: "analytics/analytics.html" that includes something like this:

<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>

Finally, just before the closing tag in your base.html template, add this:

{{ analytics_code }}

Now your analytics code will be included only when DEBUG=False. Otherwise, nothing will be included.

8
ответ дан 28 November 2019 в 04:25
поделиться

Немного поздно на вечеринке, но есть многоразовое приложение Django под названием django-google-analytics . Самый простой способ его использования:

  1. Добавьте приложение google_analytics в раздел INSTALLED_APPS файла settings.py .
  2. В свой базовый шаблон обычно это base.html , вставьте этот тег в самый верх: {% load analytics%}
  3. В том же шаблоне вставьте следующий код прямо перед закрывающим тегом основного текста: {% analytics "UA-xxxxxx-x"%} UA-xxxxxx-x - это уникальный код Google Analytics для вашего домена.
12
ответ дан 28 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: