我想保存用户注册时来自的网站。我对用户在注册之前在我的网站上看到的第一页的 HTTP 引用感兴趣。
我该如何实施?
首先,将引用者保存到会话。您可能应该在某种中间件中执行此操作:
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