문제

우리는 대략를 배포하는 새로운 장고 웹사이트,그리고 우리는 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. 사용하는 가장 쉬운 방법은 다음과 같습니다.

  1. 추가 google_analytics 귀하의 신청 INSTALLED_APPS 당신의 섹션 settings.py.
  2. 기본 템플릿에서 일반적으로 a base.html,이 태그를 맨 위에 삽입하십시오. {% load analytics %}
  3. 동일한 템플릿에서 닫는 바디 태그 직전에 다음 코드를 삽입하십시오. {% 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 도움말의 필터. 코드가없는 솔루션은 모든 사람의 삶을 더 쉽게 만듭니다.

메모: 두 가지 경고가 있습니다

  1. 실시간 필터링이 실시간에 적용되지 않기 때문에 실시간 필터링과 함께 작동하지 않습니다 (2012 년 7 월부터 문서를 확인하십시오).
  2. 이를 설정하려면 Google Analytics 계정의 관리자 여야합니다.

또 다른 간단한 방법. ~ 안에 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

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를 데이터베이스에 추가 할 필요가 없습니다 (사이트 당 하나의 프로젝트가있는 경우 더 좋다고 생각합니다). 환경이 개발 또는 생산에 관계없이 코드에 방해가됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top