배포하는 Google 애널리틱스와 Django
-
08-07-2019 - |
문제
우리는 대략를 배포하는 새로운 장고 웹사이트,그리고 우리는 Google 애널리틱스를 사용하여 추적하는 트래픽의 사이트에 공지합니다.그러나 우리는 원하지 않는 모든 마리에서 개발 인스턴스에 기여하는 Google 애널리틱스 통계입니다.
거기에 몇 가지 방법으로 우리가 다룰 수 있다:
- 구성 옵션 settings.py 는 기본 템플릿을 사용하여 여부를 결정 또는 포함하지 않도록 적절한
<script>
소 - 을 유지하는 지점이 우리에 들어오기 전에 배포하기를 생산하는 서버에 우리는 보장이 포함됩
<script>
소 - 뭔가로 Google 애널리틱스를 차단하는 안타 127.0.0.1 또는 localhost,또는
- 다른 뭔가가 있습니다.
첫 번째 옵션 보인다는 가장 현명한,그러나 나는 확실하지 않다면 그것입니다.예를 들어 우리는 우리를 통과 시작 google_analytics
변수으로 우리의 모든 전망?
당신의 생각은 무엇입니까?
해결책
먼저 개발 및 프로덕션 서버가 다른 파일에서 설정을 가져 오도록하는 방법을 만듭니다. 이를 수행하는 방법에는 여러 가지가 있습니다.
그런 다음 설정을 만들고 GOOGLE_ANALYTICS_KEY
. dev.py에서 빈 문자열로 설정하십시오. prod.py에서 "UA-124465-1"과 같은 키로 설정하십시오. a 컨텍스트 프로세서 이 설정을 모든 템플릿 컨텍스트에 추가하려면 GOOGLE_ANALYTICS_KEY
, 또는 계속해서 설정 모듈을 추가하십시오. 그런 다음 템플릿에서이를 사용하여 조건부 분석 코드를 포함시킵니다.
{% if settings.GOOGLE_ANALYTICS_KEY %}
<script> blah blah {{settings.GOOGLE_ANALYTICS_KEY}} blah blah </script>
{% endif %}
다른 팁
파티에 조금 늦었지만 재사용 가능한 Django 앱이 있습니다. Django-Google-Analytics. 사용하는 가장 쉬운 방법은 다음과 같습니다.
- 추가
google_analytics
귀하의 신청INSTALLED_APPS
당신의 섹션settings.py
. - 기본 템플릿에서 일반적으로 a
base.html
,이 태그를 맨 위에 삽입하십시오.{% load analytics %}
- 동일한 템플릿에서 닫는 바디 태그 직전에 다음 코드를 삽입하십시오.
{% analytics "UA-xxxxxx-x" %}
그만큼UA-xxxxxx-x
도메인에 대한 고유 한 Google 웹 로그 분석 코드입니다.
내 솔루션은 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",
)
디버그가 False로 설정된 경우에만 분석 코드를 포함하도록 설정했지만 다른 기능, 아마도 새로운 설정을 선호 할 수 있습니다. 디버그가 디버깅/개발 중에 히트를 추적하고 싶지 않다고 가정하기 때문에 디버그가 좋은 기본값이라고 생각합니다.
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 일 때만 포함됩니다. 그렇지 않으면 아무것도 포함되지 않습니다.
이러한 다른 모든 솔루션은 작동 할 수 있지만 Google 웹 로그 분석에서 필터를 쉽게 설정하여 제작 웹 사이트 나 웹 사이트에서 오는 모든 트래픽을 필터링 할 수 있기 때문에 이제는 모두 과잉입니다. 보다 프로필을 작성/관리합니다 GA 도움말의 필터. 코드가없는 솔루션은 모든 사람의 삶을 더 쉽게 만듭니다.
메모: 두 가지 경고가 있습니다
- 실시간 필터링이 실시간에 적용되지 않기 때문에 실시간 필터링과 함께 작동하지 않습니다 (2012 년 7 월부터 문서를 확인하십시오).
- 이를 설정하려면 Google Analytics 계정의 관리자 여야합니다.
또 다른 간단한 방법. ~ 안에 settings.py
,확인하다 debug
~이다 True
, 그런 다음 추가 :
INTERNAL_IPS = (
'127.0.0.1',
'localhost',
)
그런 다음 다음과 같은 템플릿에서 물건을 사용할 수 있습니다.
{% if not debug %}
<script> blah blah </script>
{% endif %}
생산으로 변경하려면 설정하십시오 debug
에게 False
.
IS_LIVE_SITE라는 단일 설정이 있지만 분석 코드, 광고 및 기타 몇 가지 사항을 토글합니다. 이런 식으로 나는 모든 열쇠를 전복 상태로 유지할 수 있으며 (그것을 찾는 것이 고통이기 때문에) 여전히 쉽게 켜거나 끄는 것을 전환 할 수 있습니다.
을 포함시키는 대신 스크립트 태그에서 직접 html 변경,분석 javascript 그래서 그것은 경우에만 실행됩 href 은 포함하지 않습 prod 사이트의 이름입니다.이 작업 없이 어떠한 추가 구성이 있습니다.
모든 뷰를 업데이트하지 않고 모든 템플릿에 값을 전달하는 데 사용할 수있는 템플릿 컨텍스트 프로세서가 있습니다.
http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors
내가 해결 한 죽은 간단한 방법은 다음과 같습니다.
아직 프로젝트에서 'Utils'라는 앱을 만들지 않았다. 보다 이 방향.
그러나이 접근 방식을 따라 프로젝트 설정 외에도 모든 글로벌 컨텍스트 프로세서를 포함하십시오. 더 나은 연습 인 것 같습니다. 여기에 있습니다 지침.
따라서 'Utils'앱을 작성한 후에는 컨텍스트_processors.py in /utils라는 AA 파일을 작성하십시오.
from django.conf import settings
def googleanalytics(request):
return {
'google_tracking_id' : settings.GOOGLE_TRACKING_ID,
}
setings.py 파일에서 다음을 추가하십시오.
import django.conf.global_settings as DEFAULT_SETTINGS
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
'utils.context_processors.googleanalytics',
)
도움이 되었기를 바랍니다!
안녕하세요 모두가 꽤 오래된 게시물입니다.하지만 여전히 적극적으로 유지되는 재사용 가능한 앱을 검색하는 데 시간을 보냈기 때문에 내가 찾은 것을 공유하고 싶습니다.
https://github.com/jcassee/django-analytical
이 프로젝트는 여전히 적극적으로 유지 관리되며 ID를 데이터베이스에 추가 할 필요가 없습니다 (사이트 당 하나의 프로젝트가있는 경우 더 좋다고 생각합니다). 환경이 개발 또는 생산에 관계없이 코드에 방해가됩니다.