我在Django应用程序中实现了Segment.io。用户登录后,我必须拨打一次analytics.identify
。
目前,只要是{% if user.is_authenticated %}
,每次加载页面时我都会调用它。您是否知道用户登录后我只能调用一次?
<script type="text/javascript">
{% if user.is_authenticated %}
analytics.identify('{{ user.email }}', {
'first_name': user.first_name,
'last_name': user.last_name,
});
{% endif %}
</script>
答案 0 :(得分:1)
我要实现的方式是:
答案 1 :(得分:0)
您可以在响应对象中设置一个cookie,以便在下一个页面加载中,如果设置了cookie,就可以避免呈现对analytics.identify
的调用:
def view(request):
template = loader.get_template('polls/index.html')
context = {'user_unidentified': 'user_identified' not in request.COOKIES}
response = HttpResponse(template.render(context, request))
if 'user_identified' not in request.COOKIES:
response.set_cookie('user_identified', '1')
return response
然后在您的模板中:
<script type="text/javascript">
{% if user_unidentified %}
analytics.identify('{{ user.email }}', {
'first_name': user.first_name,
'last_name': user.last_name,
});
{% endif %}
</script>
答案 2 :(得分:0)
您可以为此使用django信号。将此代码放入模型中。
from django.contrib.auth.signals import user_logged_in
def do_stuff(sender, user, request, **kwargs):
whatever...
user_logged_in.connect(do_stuff)
有关更多信息,请查看 https://docs.djangoproject.com/en/dev/ref/contrib/auth/#module-django.contrib.auth.signals和http://docs.djangoproject.com/en/dev/topics/signals/