Package: django-amplitude
Django AmplitudeIntegration between Django andAmplitude.comto help send events via theAmplitude HTTP API (v2)Quick startInstallationpipinstalldjango-amplitudeAddamplitudeto yourINSTALLED_APPS. If they are not already the Djangosessionsapp must also be added:INSTALLED_APPS=[...'django.contrib.sessions',...'amplitude',]If you do not have it already you must also add the Djangodjango.contrib.sessions.middleware.SessionMiddleware. Then add the ampliturdeSessionInfomiddleware after theSessionMiddleware:MIDDLEWARE=[...'django.contrib.sessions.middleware.SessionMiddleware',...'amplitude.middleware.SessionInfo',]Now set your Amplitude API key and user / group options in yoursettings.py:# Settings > Projects > <Your project> > General > API KeyAMPLITUDE_API_KEY='<amplitude-project-api-key>'# You can also choose if you want to include user and group data (Default False)AMPLITUDE_INCLUDE_USER_DATA=FalseAMPLITUDE_INCLUDE_GROUP_DATA=FalseNote: If you want to include user or group data you must ensure theDjango auth is setup correctly. This includes addingdjango.contrib.authanddjango.contrib.contenttypestoINSTALLED_APPSanddjango.contrib.auth.middleware.AuthenticationMiddlewaretoMIDDLEWARE.For more information on the above settings see theconfiguration settingssection.UsagePage view eventsIf you want to send an event to Amplitude on every page view you can use the django-amplitudeSendPageViewEventmiddleware to yourMIDDLEWAREin your Django settings.This will automatically create an event calledPage viewwith all the information it's possible to pull from the Django request object such as URL path and parameters, user agent info, IP info, user info etc.It must be placed after theamplitude.middleware.SessionInfomiddleware:MIDDLEWARE=['django.contrib.sessions.middleware.SessionMiddleware',...'amplitude.middleware.SessionInfo','amplitude.middleware.SendPageViewEvent',]While usingSendPageViewEventif there are certain URLs that you do not want to update Amplitude with you can use theAMPLITUDE_IGNORE_URLSsetting. This setting take a list of relative urls or URL names. Relative URLS most match exactly so need to start with a forward slash (/)AMPLITUDE_IGNORE_URLS=['my_url_name','/testurl']Sending events manuallyIf you want to send your own events:fromamplitudeimportAmplitudeamplitude=Amplitude()event_data=amplitude.build_event_data(event_type='Some event type',request=request,)amplitude.send_events([event_data])The above request will include URL and HTTP header info in theevent_properties. If you want to override the event properties you can pass them through tobuild_event_data:event_data=amplitude.build_event_data(event_type='User purchase',request=request,event_properties={'products':['laptop','phone']})build_event_data missing event data keysThebuild_event_datamethod (and in extension theSendPageViewEventmiddleware) currently does not send the following keys fromUploadRequestBodytype inAmplitude HTTP API (v2):event_idapp_versioncarrierpricequantityrevenueproductIdrevenueTypeidfaidfvadidandroid_iddmainsert_idIf you want to record an event in Amplitude with any of these keys you must use build and send your own event data usingamplitude.build_event_datawhere you can pass any of the above as kwargs:amplitude=Amplitude()event_data=amplitude.build_event_data(event_type='Some event type',request=request,app_version='1.0.0',)amplitude.send_events([event_data])Building you own eventIf you are not happy with the data frombuild_event_datayou can build you own event data based on theUploadRequestBodytype inAmplitude HTTP API (v2). If you want to do this There are a few helper functions to build different parts of the event data from the Django request object:amplitude.event_properties_from_request(request)# Gets URL and HTTP header dataamplitude.device_data_from_request(request)# Gets device info from user agentamplitude.user_properties_from_request(request)# Gets info from user modelamplitude.group_from_request(request)# Gets the list of groups a user is inamplitude.location_data_from_ip_address(ip_address)# Gets location data from IP if GeoIP2 is setupuser_properties_from_requestwill return an empty dict ifAMPLITUDE_INCLUDE_USER_DATAisFalsegroup_from_requestwill return an empty dict ifAMPLITUDE_INCLUDE_GROUP_DATAisFalseConfiguration settingsBelow are the different settings that can be overridden. To do so place the setting into yoursettings.py.# This variable is required when amplitude is added to INSTALLED_APPSAMPLITUDE_API_KEY='<amplitude-project-api-key>'# If the users Django user information is included in the Amplitude event.# This includes - username, email, full_name, is_staff, is_superuserAMPLITUDE_INCLUDE_USER_DATA=False# If the groups the user is a member of is included in the Amplitude event.# A list of the group names will be sent in the request.AMPLITUDE_INCLUDE_GROUP_DATA=False# A list of URLs which `SendPageViewEvent` middleware should not run for.# Each item in the list can be either a URL or url nameAMPLITUDE_IGNORE_URLS=['home','/please/ignore/']# The minimum permitted length for user_id & device_id fields# https://developers.amplitude.com/docs/http-api-v2#properties-2AMPLITUDE_MIN_ID_LENGTH=None