带有pinax-referrals的Django推荐系统?

时间:2018-05-21 18:15:01

标签: python django pinax referrals

我正在尝试在我的Django项目中创建引用系统。我找到了非常有趣的应用程序(pinax-referrals)来完成这项任务,并希望对其进行测试。

从文档中不清楚如何正确使用它并且没有示例。据我所知,我们需要采取下一步措施:

1)使用以下代码创建Profile模型:

from django.contrib.auth.models import User
from django.dispatch import receiver
from account.signals import user_signed_up  # django-user-account app
from pinax.referrals.models import Referral

class Profile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    referral = models.OneToOneField(Referral, null=True, on_delete=models.CASCADE)

@receiver(user_signed_up)
def handle_user_signed_up(sender, user, form, **kwargs):
    Referral.create(redirect_to=user.profile.get_absolute_url())

2)Сreate自定义注册视图:

from account.views import SignupView
from pinax.referrals.models import Referral


class RegistrationView(SignupView):

    def after_signup(self, form):
        super(RegistrationView, self).after_signup(form)
        Referral.record_response(self.request, "USER_SIGNUP")

我的步骤有多正确?你能给出一个简单的例子吗?

2 个答案:

答案 0 :(得分:1)

我认为这个问题对某些人来说很有趣。因此,我决定共享信息。几年前,我创建了一个简单的Django project,它使用pinax-referrals包作为引荐系统。我希望这个项目对某人有帮助。

答案 1 :(得分:0)

曾尝试在这方面使用您的想法,但我遇到了一些错误

File "C:\Users\n\PycharmProjects\Elijahs_Agnes\venv\lib\site-packages\django\db\models\query.py", line 435, in get
    raise self.model.DoesNotExist(
App1.models.Profile.DoesNotExist: Profile matching query does not exist.

File "C:\Users\n\AppData\Local\Programs\Python\Python38\lib\logging\config.py", 

line 570, in configure
        raise ValueError('Unable to configure handler '
    ValueError: Unable to configure handler 'debug'

我正在使用这个记录器

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '[%(asctime)s] | %(levelname)s | %(message)s',
            'datefmt': '%d/%b/%Y %H:%M:%S',
        },
    },
    'handlers': {
        'debug': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logging/debug.log',
            'maxBytes': 1024*1024*5,
            'formatter': 'simple',
        },
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logging/error.log',
            'maxBytes': 1024*1024*5,
            'formatter': 'simple',
        },
    },
    'loggers': {
        'django': {
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
            'handlers': ['debug', 'error'],
        },
    },
}