Написал вам примерный код для регистрации юзера по реф системе. Возможно Вам поможет разобраться как работать с сессиями и get параметрами
def register(reqest):
if request.method == 'POST':
"""
Например у нас есть модель юзера и у нее есть уникальное поле с ref_hash
- регистрируем юзера
после того как юзера успешно зарегистрировали ищем по ref_hash юзера для вручения бонуса
"""
try:
ref = request.session.get('ref', None)
user = User.objects.get(ref_hash = ref)
# тут можно делать нужные вам бонусы для юзера
except User.DoesNotExist:
# тут можно обработать исключение
pass
# redirect/render/etc
else:
"""
например у нас есть страница регистрации - пользователь заходит на нее по реф ссылке example.com/signup/?ref="hash-code"
берем ref и сохраняем в Django session
"""
ref = request.GET.get('ref', None)
request.session['ref'] = 'ref'
# рендер страницы
В вашем случае скорей всего придеться писать middleware
https://docs.djangoproject.com/en/1.11/topics/http... которая будет брать первый заход юзера и записывать в базу его статистику