概要
-
ログイン時やサインアップ時に、Google Analytics にイベントを送信します
- Google Analyticsへのイベント送信は、別記事「DjangoからGoogle Analyticsにコンバージョンを送信する」をご覧ください
-
config/signals.py
にsend_ga4_event
という関数を作っています
-
- Google Analyticsへのイベント送信は、別記事「DjangoからGoogle Analyticsにコンバージョンを送信する」をご覧ください
-
認証は、Djangoの標準の機能(django.contrib.auth)を使っています
-
シグナルを使うため、アダプタを作成する必要はありません
- ログインのシグナルは、公式ドキュメントのdjango.contrib.authの「ログインとログアウトのシグナル」をご覧ください
- サインアップは、公式ドキュメントの「既存の User モデルを拡張する」をご覧ください
シグナルハンドラの作成
- シグナルを受け取った時の処理を記述するための accounts/signals.py ファイルを作成します
from django.contrib.auth.signals import user_logged_in
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth import get_user_model
from config.google_analytics import send_ga4_event
User = get_user_model()
@receiver(user_logged_in)
def user_logged_in_handler(sender, request, user, **kwargs):
# GA4イベントを送信
client_id = request.session.session_key
event_name = "user_login"
params = {
"user_id": user.id,
"username": user.username,
}
send_ga4_event(client_id, event_name, params)
@receiver(post_save, sender=User)
def user_created_handler(sender, instance, created, **kwargs):
if created:
# GA4イベントを送信
client_id = instance.id # 新規ユーザーの場合、session_keyがないのでuser.idを使用
event_name = "user_signup"
params = {
"user_id": instance.id,
"username": instance.username,
}
send_ga4_event(client_id, event_name, params)
シグナルハンドラの読み込み
- accounts/apps.py を修正して、シグナルハンドラを読み込みます
from django.apps import AppConfig
class AccountsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'accounts'
def ready(self):
import accounts.signals # シグナルを読み込む
INSTALLED_APPS の確認
- プロジェクトのsettings.pyファイルで、 INSTALLED_APPSに
accounts
が含まれているのを確認します-
accounts
が含まれているのに、追加で「"accounts.apps.AccountsConfig",」のように書くと、ユニークな名前ではないとエラーになります
-
Google Analyticsで動作確認
- Google Analyticsの「リアルタイム」などで動作確認します