2009-03-10 4 views
25

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

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

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

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

Что вы думаете?

ответ

39

Во-первых, создайте способ, чтобы ваши серверы разработки и производства извлекали настройки из разных файлов, например dev.py и prod.py. Есть много способов сделать это.

Затем создайте настройку, GOOGLE_ANALYTICS_KEY. В dev.py установите его в пустую строку. В prod.py установите его на свой ключ, что-то вроде «UA-124465-1». Создайте context processor, чтобы добавить этот параметр во все контексты вашего шаблона: GOOGLE_ANALYTICS_KEY или просто добавьте свой модуль настроек. Затем, в шаблоне, используйте его условно включать свой код аналитики:

{% if settings.GOOGLE_ANALYTICS_KEY %} 
<script> blah blah {{settings.GOOGLE_ANALYTICS_KEY}} blah blah </script> 
{% endif %} 
+0

Спасибо, Нед, я ожидал, что это будет путь. :) –

2

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

2

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

+0

Очень простое решение. [Здесь] (http://stackoverflow.com/a/8178283/5802289). – J0ANMM

6

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

Вот отрывок из моего файла 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. В противном случае ничего не будет включено.

10

Немного поздно на вечеринку, но есть приложение для повторного использования 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 код ваш домен.
5

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

Примечание: есть два предостережений

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

Вот мертвый простой способ, что я ее решил:

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

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

Итак, создав свое приложение «utils», создайте файл с именем context_processors.р в/утилитах, который выглядит следующим образом:

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

)

Надеется, что это помогает!

2

Другой простой способ. В settings.py, Проверьте 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

0

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

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

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

Смежные вопросы