Мы собираемся развернуть новый веб-сайт Django, и мы хотим использовать Google Analytics для отслеживания движение на сайте. Однако мы не хотим, чтобы все хиты на экземплярах разработки способствовали статистике Google Analytics.
Существует несколько способов, которыми мы могли иметь дело с этим:
<script>
элементы,<script>
элементы,Первая опция кажется самым разумным, но я не уверен, ли это. Например, был бы, мы должны начать передавать a google_analytics
переменная во все наши представления?
Каковы Ваши мысли?
Во-первых, создайте способ иметь Ваши серверы разработки, и рабочие серверы вытягивают настройки из различных файлов, говорят 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 %}
Я главным образом соглашаюсь с Ned, хотя у меня есть единственная установка под названием IS_LIVE_SITE, который переключает код аналитики, объявления и несколько других вещей. Таким образом, я могу сохранить все ключи в подрывной деятельности (поскольку это - боль для поиска их), и все еще переключите их на или прочь легко.
У Вас есть шаблонные процессоры контекста, которые могут использоваться для передачи значений всем шаблонам, не обновляя все представления.
http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors
Вместо включения тега script непосредственно в Вашем HTML, просто измените аналитику JavaScript, таким образом, это только работает, если href не содержит Ваше название сайта напоминания. Это будет работать без любой дополнительной конфигурации.
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.
Немного поздно на вечеринке, но есть многоразовое приложение Django под названием django-google-analytics . Самый простой способ его использования:
google_analytics
в раздел INSTALLED_APPS
файла settings.py
. base.html
, вставьте этот тег в самый верх: {% load analytics%}
{% analytics "UA-xxxxxx-x"%}
UA-xxxxxx-x
- это уникальный код Google Analytics для вашего домена.