Implementando Google Analytics con Django

Estamos a punto de implementar un nuevo sitio web de Django y queremos utilizar Google Analytics para realizar un seguimiento del tráfico en el sitio. Sin embargo, no queremos que todos los resultados en instancias de desarrollo contribuyan a las estadísticas de Google Analytics.

Hay algunas maneras en que podemos lidiar con esto:

  • tener una opción de configuración en settings.py que la plantilla base utiliza para decidir si incluir o no los elementos apropiados,
  • mantenemos una twig a la que accedemos antes de realizar la implementación en el servidor de producción, que garantizamos que incluye los elementos ,
  • hacer algo con Google Analytics para bloquear visitas a 127.0.0.1 o localhost, o
  • algo más.

La primera opción parece la más sensata, pero no estoy seguro de que lo sea. Por ejemplo, ¿tendríamos que empezar a pasar una variable google_analytics a todas nuestras vistas?

¿Cuáles son tus pensamientos?

    Primero, cree una forma para que sus servidores de desarrollo y producción obtengan configuraciones de diferentes archivos, por ejemplo, dev.py y prod.py. Hay muchas formas de hacer esto.

    Luego, crea una configuración, GOOGLE_ANALYTICS_KEY . En dev.py configúralo a la cadena vacía. En prod.py, ajústelo a su clave, algo como “UA-124465-1”. Cree un procesador de contexto para agregar esta configuración a todos los contextos de su plantilla, ya sea como GOOGLE_ANALYTICS_KEY , o simplemente continúe y agregue su módulo de configuración. Luego, en su plantilla, utilícela para incluir condicionalmente su código de análisis:

     {% if settings.GOOGLE_ANALYTICS_KEY %}  {% endif %} 

    Un poco tarde para la fiesta, pero hay una aplicación reutilizable de Django llamada django-google-analytics . La forma más fácil de usarlo es:

    1. Agregue la aplicación google_analytics a su sección INSTALLED_APPS de su settings.py .
    2. En su plantilla base, generalmente una base.html , inserte esta etiqueta en la parte superior: {% load analytics %}
    3. En la misma plantilla, inserte el siguiente código justo antes de la etiqueta del cuerpo de cierre: {% analytics "UA-xxxxxx-x" %} el UA-xxxxxx-x es un código único de Google Analytics para su dominio.

    Mi solución tiene un enfoque similar a la respuesta preferida de Ned, pero separa el código analítico en su propia plantilla. Prefiero esto, así que solo puedo copiar la plantilla de proyecto a proyecto.

    Aquí hay un fragmento de mi archivo 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': "" } 

    Por supuesto, deberás decirle a Django que incluya esto en tu contexto. En su archivo settings.py, incluya:

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

    Lo tengo configurado para incluir el código analítico solo cuando DEBUG está configurado como Falso, pero es posible que prefiera borrarlo de alguna otra forma, tal vez una nueva configuración. Creo que DEBUG es un buen valor por defecto, ya que supone que no desea realizar un seguimiento de los hits mientras se realiza la depuración / desarrollo.

    Cree una configuración con su clave de Google Analytics:

     GOOGLE_ANALYTICS_KEY = "UA-1234567-8" 

    Cree una plantilla llamada: “analytics / analytics.html” que incluya algo como esto:

       

    Finalmente, justo antes de la etiqueta de cierre en su plantilla base.html, agregue esto:

     {{ analytics_code }} 

    Ahora su código de análisis se incluirá solo cuando DEBUG = False. De lo contrario, nada será incluido.

    Todas estas otras soluciones pueden funcionar, pero todas son excesivas ahora porque puede configurar fácilmente un filtro en Google Analytics para filtrar todo el tráfico que no proviene de su sitio web de producción o sitios web. Consulte Crear / Administrar filtros de perfil en la Ayuda de GA. Una solución sin código simplemente facilita la vida de todos.

    Nota : hay dos advertencias.

    1. esto no funciona con el filtrado en tiempo real, porque no se aplican filtros en tiempo real (a partir de julio de 2012 – verifique sus documentos)
    2. tienes que ser un administrador con la cuenta de Google Analytics para configurar esto

    Estoy más de acuerdo con Ned, aunque tengo una configuración única llamada IS_LIVE_SITE que alterna el código analítico, los anuncios y algunas otras cosas. De esta manera, puedo mantener todas las claves en subversión (ya que es un dolor buscarlas) y aún así activarlas o desactivarlas fácilmente.

    En lugar de incluir la etiqueta de script directamente en su html, simplemente cambie el javascript de análisis para que solo se ejecute si el href no contiene el nombre del sitio de su producto. Esto funcionará sin ninguna configuración adicional.

    Otra forma sencilla. En settings.py , Verifique que la debug es True , luego agregue:

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

    Entonces puedes usar cosas en tu plantilla como esta:

     {% if not debug %}  {% endif %} 

    Si desea cambiar a producción, configure la debug en False .

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

    Tiene procesadores de contexto de plantilla que se pueden usar para pasar valores a todas las plantillas sin actualizar todas sus vistas.

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

    Aquí está la manera simple y simple en que lo resolví:

    Crea una aplicación en tu proyecto llamada ‘utils’ si aún no lo has hecho. Vea estas direcciones .

    Sin embargo, siga este enfoque para incluir todos los procesadores de contexto globales además de la configuración del proyecto. Parece ser una mejor práctica. Aquí están las instrucciones .

    Entonces, después de crear su aplicación ‘utils’, cree un archivo llamado context_processors.py en / utils que tenga este aspecto:

     from django.conf import settings def googleanalytics(request): return { 'google_tracking_id' : settings.GOOGLE_TRACKING_ID, } 

    En su archivo settings.py, agregue esto:

     import django.conf.global_settings as DEFAULT_SETTINGS TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + ( 'utils.context_processors.googleanalytics', 

    )

    ¡Espero que esto ayude!

    Hola a todos, es una publicación bastante antigua. Pero como pasé un tiempo buscando una aplicación reutilizable que aún se mantiene activamente, quiero compartir lo que encontré:

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

    Este proyecto aún se mantiene activamente y no requiere que la ID se agregue a la base de datos (creo que es mejor si tiene un proyecto por sitio), por lo que se incluye en el código sin importar si el entorno es de desarrollo o producción.