4👍
Define a special set of URLs (in your urls.py
) for referral links. Pass them through a Python function that registers the referral and then send them to the normal view with the referral number as a parameter.
Is this what you had in mind, or what else would you like to know?
8👍
I have done this a while back and figured my notes could help someone looking for this:
Create referral urls
Whenever you issue a referral url to your user, store it in a table. In my case I had urls for different purposes (‘invite your friends’, ‘share this item’ etc.) So I stored the type of referral as well.
Add an entry point to your site like http://example.com/ref/jklejis to process the incoming url. If you don’t like to have an obvious ‘referral’ url you could use middleware to simply capture a special url parameter on any url to your site and process it that way i.e. http://example.com/items/123?r=jklejis
Track referred visitor
As soon as a visitor visits from a referral I plant a cookie and any further requests by that user are tracked by a piece of middleware that tracks the actions in a table.
I then run a job to parse the ‘action’ table to issue credits to users. I had no real-time requirements here, but if you do then use a signal to specific actions to kick off your code.
I recently came across this project which seems to be still ‘alpha’ but it does something similar and could get you started: https://github.com/pinax/pinax-referrals
7👍
You could use a very simple model to keep track of them
class UserReferral(models.Model):
referrer = models.ForeignKey(User)
referred = models.ForeignKey(User)
class Meta:
unique_together = (('referrer', 'referred'),)
Then you can count how many a user has referred:
UserReferral.objects.filter(referrer=user).count()
Etc..
- Django: Forbidden (CSRF cookie not set.)
- Raising ValidationError from django model's save method?
- Django and models with multiple foreign keys
- Django Admin, accessing reverse many to many
- Django: use render_to_response and set cookie
3👍
Keeping track of a user’s session especially after they cross the boundry of signup/login is a tricky issue. I have written a referrals app http://paltman.com/how-to-easily-add-referrals-to-a-website/.
- Pycharm error: Improperly configured
- How to connect PyCharm to a Heroku postgres database
- I cannot ignore pycache and db.sqlite on Django even though it refers them at .gitignore