7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

djangoで作ったwebページにgoogle analyticsのトラッキングコードを埋め込む方法

Posted at

とりあえずメモとして。

やりたきことはdjangoで作ったwebサイトにトラッキングコードをいい感じに埋めたかったんです。

GAへのプロパティ追加とかはすでに済んでいる前提です。

やること

独自のcontext_processorsとやらを作成する

app名/context_processors.py というファイルを新しく作り


from django.conf import settings

def google_analytics(request):
    """
    DEBUG=Falseの場合に、GoogleアナリティクスのトラッキングIDを返す
    """
    # GoogleアナリティクスのトラッキングIDをsettings.pyから取得する
    # settings.py内に、GOOGLE_ANALYTICS_TRACKING_ID='自分のトラッキングID'を書き込んでおく
    ga_tracking_id = getattr(settings, 'GOOGLE_ANALYTICS_TRACKING_ID', False)

    # DEBUG=FalseかつGoogleアナリティクスのトラッキングIDを取得できたら、
    # テンプレート内で'GOOGLE_ANALYTICS_TRACKING_ID'という変数を利用できるようにする
    if not settings.DEBUG and ga_tracking_id:
        return {
            'GOOGLE_ANALYTICS_TRACKING_ID': ga_tracking_id,
        }
    return {}

これをそのまま貼り付けます。

作っただけだとなんにもならないので、

settings.pyを編集し、↑を読み込ませてあげます。

TEMPLATESの変数があると思うので、


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # 404ページ用に記載
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'app名.context_processors.google_analytics', ←を追加
            ],
        },
    },
]

上記のような感じで一行追加します。

更に、
どこでもいいので、settings.pyのなかのどこかに、

GOOGLE_ANALYTICS_TRACKING_ID = 'トラッキングID'

を追記します。

こうするとdjangoアプリが起動したタイミングで、
context_processors.py
が読み込まれて、テンプレートの中で、

{{ GOOGLE_ANALYTICS_TRACKING_ID }}

という感じで変数を呼び出せるんじゃないかって推測してます。

templateでgaのトラッキングコードを呼び出す。

base.html が置かれているディレクトリに新しく、

ga.html

というファイルを作成し、

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=トラッキングコード"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'トラッキングコード');
</script>

GAの画面で出力されたjsをそのまま貼っつけます。

もちろんこれだけだと読み込まれないので、base.htmlのheadタグの中に、

{% if GOOGLE_ANALYTICS_TRACKING_ID %}
    {% include 'app名/ga.html' %}
{% endif %}

を追記します。
場合によっては、
{% include 'ga.html' %}

でいけちゃうかもです。そこらへんはよしなに。

これで、DEBUGモードじゃないかつ、settings.pyにGOOGLE_ANALYTICS_TRACKING_IDが設定されている場合にのみ、
トラッキングコードがwebページに埋め込まれます。

以上です。

はじめは、
https://www.djangobrothers.com/blogs/django_google_analytics/
を参考にしたのですが、

context_processors.google_analytics
をsettings.pyに追記しろと書かれておらず、

[django context_processors]

でぐぐったらどっかのqiitaの記事が引っかかってどうにか設定できました。

なんか回りくどいことしてるような気がしないでもですが、
context_processors
について色々学べたので良しとしましょう。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?