Django:用户注册时保存引用

时间:2013-01-04 17:08:31

标签: django http-referer

我想保存用户注册时来自的网站。我对用户在注册前在我的网站上看到的第一页的HTTP referer感兴趣。

我该如何实施?

1 个答案:

答案 0 :(得分:5)

首先,将引荐来源保存到会话中。您可能应该在某种中间件中执行此操作:

import urlparse

class SaveReferrerMiddleware(object):
    def process_request(self, request):
        referer = request.META.get('HTTP_REFERER', None)
        if referer is not None:
            domain = urlparse.urlparse(referer).netloc
            if domain not in ['www.yoursite.com', 'yoursite.com']:
                # External referer
                request.session['initial_referer'] = referer

(显然,视情况更改yoursite.com等)

然后,在您的注册视图代码中,将会话中的引用者保存到您的用户对象。

这当然取决于是否有存储该信息的地方。如果您有自定义用户对象,则可以为其创建字段。在Django 1.5之前,您可以使用AUTH_PROFILE_MODULE来扩展用户类。见https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model