2010-03-25 3 views
7

J'ai un site de commerce électronique qui fonctionne de façon classique: les gens s'inscrivent, achètent un produit avec leur CC.Django: Implémenter un programme de parrainage

Il utilise le système d'authentification Django par défaut pour les utilisateurs et l'infrastructure d'enregistrement et de session. Maintenant, je veux mettre en place un système de référence à mon système où les gens peuvent inviter d'autres personnes en donnant leur lien de référence (mysite.com/referral/123123/) et si une personne s'inscrit et achète un article, l'invité reçoit 5 $.

Comment cela peut-il être implémenté? Par exemple:

  • Après le nouvel utilisateur entre dans le site avec le lien de parrainage, comment puis-je garder une trace de cet utilisateur avec le referrer? Enregistrer son référant à la session?

  • Quelle modification dois-je faire au modèle utilisateur django intégré pour suivre ces référents et référencés?

Répondre

4

Définissez un ensemble spécial d'URL (dans votre urls.py) pour les liens de référence. Passez-les à travers une fonction Python qui enregistre la référence, puis envoyez-les à la vue normale avec le numéro de référence en tant que paramètre. Est-ce ce que vous aviez en tête, ou que voulez-vous savoir d'autre?

+0

merci pour votre réponse, j'ai mis à jour ma question. – Hellnar

4

Vous pouvez utiliser un modèle très simple pour garder une trace de

class UserReferral(models.Model): 
    referrer = models.ForeignKey(User) 
    referred = models.ForeignKey(User) 

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

Ensuite, vous pouvez compter combien un utilisateur a fait référence:

UserReferral.objects.filter(referrer=user).count() 

Etc ..

5

Je fait cela il y a un certain temps et figuré mes notes pourraient aider quelqu'un qui cherche ceci:

Création d'URL de référence

Chaque fois que vous émettez une URL de référence à votre utilisateur, stockez-la dans un tableau. Dans mon cas, j'avais des URL à des fins différentes («inviter vos amis», «partager cet élément», etc.) J'ai donc stocké le type de référence. Ajouter un point d'entrée à votre site comme http://example.com/ref/jklejis pour traiter l'URL entrante. Si vous ne voulez pas avoir une URL évidente « de référence », vous pouvez utiliser le middleware pour capturer simplement un paramètre spécial url sur une URL pour votre site et le traiter de cette façon-à-dire http://example.com/items/123?r=jklejis

piste appelée visiteur

Dès qu'un visiteur visite à partir d'un site de référence, je plante un cookie et toutes les autres requêtes de cet utilisateur sont suivies par un middleware qui suit les actions dans un tableau. Ensuite, je lance un travail pour analyser la table 'action' afin d'émettre des crédits aux utilisateurs. Je n'ai pas d'exigences en temps réel ici, mais si vous le faites, utilisez un signal pour des actions spécifiques pour lancer votre code.

Je suis récemment tombé sur ce projet qui semble être encore « alpha », mais il fait quelque chose de similaire et pourrait vous aider à démarrer: http://pinax-referrals.readthedocs.org/en/latest/

Questions connexes