Подтвердить что ты не робот

Развертывание Google Analytics с помощью Django

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

Есть несколько способов справиться с этим:

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

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

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

4b9b3361

Ответ 1

Сначала создайте способ, чтобы ваши серверы разработки и производства извлекали настройки из разных файлов, например 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 %}

Ответ 2

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

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

Ответ 3

Мое решение использует аналогичный подход к предпочтению 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': "" }

Конечно, вам нужно будет сообщить Django об этом в вашем контексте. В файле settings.py укажите:

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

У меня он настроен на включение кода аналитики только тогда, когда для DEBUG установлено значение False, но вы можете предпочесть от него что-то другое, возможно, новую настройку. Я думаю, что DEBUG является хорошим дефолтом, поскольку предполагает, что вы не хотите отслеживать какие-либо удары во время отладки/разработки.

Создайте настройку с помощью ключа Google Analytics:

GOOGLE_ANALYTICS_KEY = "UA-1234567-8"

Создайте шаблон под названием: "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>

Наконец, перед закрывающим тегом в вашем шаблоне base.html добавьте следующее:

{{ analytics_code }}

Теперь ваш код аналитики будет включен только тогда, когда DEBUG = False. В противном случае ничего не будет включено.

Ответ 4

Все эти другие решения могут работать, но теперь они все переполнены, потому что вы можете легко настроить фильтр в Google Analytics, чтобы отфильтровать весь трафик, который не поступает с вашего веб-сайта или веб-сайта. См. Создать/управлять профилем Фильтры в справке GA. Решение без кода просто облегчает жизнь.

Примечание: есть две оговорки

  • это не работает с фильтрацией в реальном времени, потому что фильтры не применяются в реальном времени (по состоянию на июль 2012 года - проверяют их документы).
  • вы должны быть администратором учетной записи Google Analytics, чтобы установить это.

Ответ 5

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

Ответ 6

Вместо того, чтобы включать тег script непосредственно в ваш html, просто измените javascript analytics, чтобы он запускался только в том случае, если href не содержит ваше имя сайта prod. Это будет работать без дополнительной настройки.

Ответ 7

Еще один простой способ. В settings.py Check debug есть True, затем добавьте:

INTERNAL_IPS = (
    '127.0.0.1',
    'localhost',
)

Затем вы можете использовать вещи в своем шаблоне следующим образом:

{% if not debug %}
<script> blah blah </script>
{% endif %}

Если вы хотите перейти к производству, установите debug в False.

Ref: http://www.djangobook.com/en/2.0/chapter09.html

Ответ 9

Здесь мертвый простой способ, которым я его решил:

Создайте приложение в своем проекте под названием "utils", если вы еще этого не сделали. См. эти направления.

Однако следуйте этому подходу, чтобы включить все глобальные процессинговые процессы в дополнение к настройкам проекта. Кажется, это лучшая практика. Ниже приведены инструкции .

Итак, создав приложение "utils", создайте файл context_processors.py in/utils, который выглядит так:

from django.conf import settings

def googleanalytics(request):
    return {
        'google_tracking_id' : settings.GOOGLE_TRACKING_ID,
    }

В файле settings.py добавьте следующее:

import django.conf.global_settings as DEFAULT_SETTINGS

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
     'utils.context_processors.googleanalytics',

)

Надеюсь, это поможет!

Ответ 10

Привет всем, это довольно старый пост. Но поскольку я потратил некоторое время на поиск некоторого многоразового приложения, которое все еще активно поддерживается, я хочу поделиться тем, что нашел:

https://github.com/jcassee/django-analytical

Этот проект по-прежнему активно поддерживается и не требует добавления идентификатора в базу данных (я думаю, это лучше, если у вас есть один проект на сайт), поэтому он оговорен в коде независимо от того, является ли среда разработкой или производством.