我有一个以经典方式运作的电子商务网站:人们注册,使用他们的CC购买产品。
它为用户以及注册和会话框架使用默认的Django auth系统。
现在我想在我的系统中实现一个推荐系统,人们可以通过提供他们的推荐链接(即mysite.com/referral/123123/
)来邀请其他人,如果有人注册并购买了一个项目,则邀请者获得5美元。
如何实施? 例如:
新用户使用引荐链接进入网站后,如何使用引荐来源跟踪此用户?将他的推荐人保存到会话中?
我应该对内置的django用户模型进行哪些修改来跟踪这些引用和引用的引用?
答案 0 :(得分:6)
我已经做了一段时间,并认为我的笔记可以帮助有人寻找这个:
创建引荐网址
每当您向用户发出引荐网址时,请将其存储在表格中。在我的情况下,我有不同目的的网址('邀请你的朋友','分享这个项目'等)所以我也存储了推荐的类型。 为您的网站添加一个入口点,例如 http://example.com/ref/jklejis 来处理传入的网址。如果你不喜欢有一个明显的“推荐”网址,你可以使用中间件在网站的任何网址上捕获一个特殊的网址参数,并按照这种方式进行处理,即 http://example.com/items/123?r=jklejis < / p>
跟踪推荐访问者
一旦访问者从推荐中访问我就会生成一个cookie,并且该用户的任何进一步请求都会被跟踪表中操作的中间件跟踪。 然后我运行一个工作来解析'action'表以向用户发放信用。我这里没有实时要求,但是如果你这样做,那么就使用信号来执行特定的操作来启动你的代码。
我最近遇到过这个似乎仍然是“alpha”的项目,但它做了类似的事情,可以让你开始:http://pinax-referrals.readthedocs.org/en/latest/
答案 1 :(得分:4)
为引荐链接定义一组特殊的网址(在urls.py
中)。将它们传递给注册引用的Python函数,然后将引用号作为参数发送到普通视图。
这是你想到的,或者你还想知道什么?
答案 2 :(得分:4)
您可以使用非常简单的模型来跟踪它们
class UserReferral(models.Model):
referrer = models.ForeignKey(User)
referred = models.ForeignKey(User)
class Meta:
unique_together = (('referrer', 'referred'),)
然后您可以计算用户推荐的数量:
UserReferral.objects.filter(referrer=user).count()
等。
答案 3 :(得分:2)
特别是在他们越过注册/登录的边界之后跟踪用户的会话是一个棘手的问题。我写了一个推荐应用http://paltman.com/how-to-easily-add-referrals-to-a-website/。