Django与振幅的积分

django-amplitude的Python项目详细描述


Django振幅

Django和Amplitude.com之间的集成,以帮助通过Amplitude HTTP API (v2)发送事件

快速入门

安装

pip install django-amplitude

amplitude添加到您的INSTALLED_APPS。如果还没有,还必须添加Djangosessions应用程序:

^{pr2}$

如果您还没有它,您还必须添加Djangodjango.contrib.sessions.middleware.SessionMiddleware。然后在SessionMiddleware后面添加amplitradeSessionInfo中间件:

MIDDLEWARE=[...'django.contrib.sessions.middleware.SessionMiddleware',...'amplitude.middleware.SessionInfo',]

现在在settings.py中设置振幅API密钥和用户/组选项:

# 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=False

注意:如果要包含用户或组数据,必须确保Django auth is setup correctly。这包括将django.contrib.authdjango.contrib.contenttypes添加到INSTALLED_APPS和{}到{}。在

使用

页面查看事件

如果您想在每个页面视图上向振幅发送一个事件,那么可以在django设置中使用django振幅SendPageViewEvent中间件。在

{info{info}用户会自动创建一个名为info}的请求的信息

它必须放在amplitude.middleware.SessionInfo中间件之后:

MIDDLEWARE=['django.contrib.sessions.middleware.SessionMiddleware',...'amplitude.middleware.SessionInfo','amplitude.middleware.SendPageViewEvent',]

在使用SendPageViewEvent时,如果有某些URL不想更新振幅,则可以使用AMPLITUDE_IGNORE_URLS设置。此设置获取相对URL或URL名称的列表。相对URL最匹配,因此需要以正斜杠(/)开头

AMPLITUDE_IGNORE_URLS=['my_url_name','/testurl']

手动发送事件

如果您想发送自己的活动:

fromamplitudeimportAmplitudeamplitude=Amplitude()event_data=amplitude.build_event_data(event_type='Some event type',request=request,)amplitude.send_events([event_data])

上面的请求将在event_properties中包含URL和HTTP头信息。如果要重写事件属性,可以将它们传递给build_event_data

event_data=amplitude.build_event_data(event_type='User purchase',request=request,event_properties={'products':['laptop','phone']})

构建事件数据缺失事件数据键

build_event_data方法(以及扩展的SendPageViewEvent中间件)当前不从Amplitude HTTP API (v2)中的UploadRequestBody类型发送以下密钥:

  • 事件编号
  • 应用程序版本
  • 承运人
  • 价格
  • 数量
  • 收入
  • 产品ID
  • 收入类型
  • 以色列国防军
  • 以色列国防军
  • 阿迪德
  • 安卓手机id
  • dma系统
  • 插入\u id

如果要用这些键中的任何一个记录振幅事件,则必须使用生成并使用amplitude.build_event_data发送您自己的事件数据,其中您可以将上述任何一项作为kwarg传递:

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])

建立你自己的活动

如果您对来自build_event_data的数据不满意,您可以基于Amplitude HTTP API (v2)中的UploadRequestBody类型构建自己的事件数据。如果您想这样做,有几个helper函数可以从Django请求对象构建事件数据的不同部分:

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 setup
  • ^如果AMPLITUDE_INCLUDE_USER_DATAFalse,则{}将返回一个空dict
  • ^如果AMPLITUDE_INCLUDE_GROUP_DATAFalse,则{}将返回一个空dict

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException