Django: 实现推荐计划

12

我有一个经典的电商网站: 用户注册,使用他们的信用卡购买商品。

它使用默认的Django用户验证系统、注册和会话框架。

现在,我想向我的系统实现一个推荐系统,通过给出他们的推荐链接(如mysite.com/referral/123123/)邀请其他人,如果一个人注册并购买了商品,邀请者将得到5美元的奖励。

如何实现呢? 例如:

  • 当新用户使用推荐链接进入网站后,如何跟踪这个用户和他的推荐人?保存他的推荐人到会话中吗?

  • 应该对内置的Django用户模型进行什么修改,以跟踪这些推荐人和被推荐人?

4个回答

8

我之前做过这个,想着我的笔记可以帮助需要的人:

创建推荐链接

每当您向用户发出推荐链接时,请将其存储在表中。在我的情况下,我有不同目的的url(“邀请朋友”,“分享此项”等),因此我也存储了推荐类型。添加一个入口点到您的网站,例如http://example.com/ref/jklejis来处理传入的url。如果您不喜欢明显的“推荐”url,则可以使用中间件来捕获任何指向您的网站的url上的特殊url参数并以这种方式处理它,即http://example.com/items/123?r=jklejis

跟踪推荐的访问者

一旦访问者从推荐中访问,我就会种植一个cookie,并通过跟踪中间件跟踪该用户的任何后续请求,并在表中跟踪这些操作。然后运行作业来解析“操作”表以向用户发放积分。我在这里没有实时要求,但是如果您有实时要求,则使用信号来指定操作以启动您的代码。

我最近发现了这个项目,它似乎仍处于“alpha”状态,但它执行类似的操作,并可以帮助您入门:https://github.com/pinax/pinax-referrals


7
你可以使用一个非常简单的模型来跟踪它们。
class UserReferral(models.Model):
    referrer = models.ForeignKey(User)
    referred = models.ForeignKey(User)

    class Meta:
        unique_together = (('referrer', 'referred'),)

然后您可以统计用户推荐的数量:
UserReferral.objects.filter(referrer=user).count()

Etc..


使用一对一的键从用户到用户,这种方法如何?哪一个更好? - Abhijith Konnayil
@AbhijithK,这并不理想,因为一个用户可以推荐多个人,同样地,一个用户也可以从许多人那里获得推荐。例如,假设你运行了一项促销活动来吸引人们加入你的应用程序。在用户活动下降一段时间后,你又运行了另一项促销活动来重新激发他们对该应用程序的兴趣。 - Kevin Omyonga

4
在您的urls.py中定义一组特殊的URL用于推荐链接。通过一个Python函数将它们注册为推荐,并将带有推荐编号的参数传递给普通视图。这是您想要的吗?还是您还想了解其他内容?

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接