【问题标题】:Unique referral code generate in django在 django 中生成唯一的推荐代码
【发布时间】:2023-03-22 07:16:01
【问题描述】:

我是 django 的新手,我想为每个具有注册的用户生成一个唯一推荐代码。这个推荐代码将通过电子邮件发送给用户。我是使用 userena,我不知道如何使用 userena。这些是有关该问题的一些链接,但不太清楚如何使用 userena

实施

https://github.com/byteweaver/django-referral

https://pypi.python.org/pypi/django-referral

http://paltman.com/2012/08/17/how-to-easily-add-referrals-to-a-website/.

.所以如果有人对此问题有明确的想法,请与我分享。 干杯

【问题讨论】:

    标签: python django


    【解决方案1】:

    您必须为保留推荐代码创建一个新模型。下面给出了模型语法。

    import uuid
    import base64
    from django.db import models
    from django.contrib.auth.models import User
    from django.utils.translation import ugettext_lazy as _
    from django.db.models.signals import post_save
    from userena.models import UserenaLanguageBaseProfile
    from userena.utils import user_model_label 
    
    
    class Profile(UserenaLanguageBaseProfile):
        """ Default profile """
    
        user = models.OneToOneField(User,
                                    unique=True,
                                    verbose_name=_('user'),
                                    related_name='profile')
        referral_code = models.CharField(max_length=300, blank=True, null=True)
    
    
        def get_absolute_url(self):
            return u'/profile/show/%d' % self.id
        def generate_verification_code(self):
            # Generate user's verification code
            # TODO: Move this to the model
            return base64.urlsafe_b64encode(uuid.uuid1().bytes.encode("base64").rstrip())[:25]
    
        def save(self, *args, **kwargs):
            """
            If this is a new user, generate code.
            Otherwise leave as is
            """
            if not self.pk:
                self.referral_code = self.generate_verification_code()
            elif not self.verification_code:
                self.referral_code = self.generate_verification_code()
    
            return super(Profile, self).save(*args, **kwargs)
    

    在你的models.py的最后几行中添加这些行

    def create_user_profile(sender, instance, created, **kwargs):
        if created:
            profile, created = Profile.objects.get_or_create(user=instance)
    
    post_save.connect(create_user_profile, sender=User)
    

    上面提到的行将在创建用户时创建您的用户个人资料。

    希望这对你有用!!!

    【讨论】:

    • 我面临一个错误... NameError: global name 'CustomUser' is not defined ,现在可能会发生,因为作为回报,您使用 CustomUser in 作为参数Super.如何解决?尤格什
    • 编辑了您现在可以看到的帖子。
    • 您的答案运行良好,即正在生成推荐代码,但是当我尝试使用默认的 userena 编辑配置文件选项编辑用户配置文件时,我遇到了类似 'Profile' 对象的错误没有属性'verification_code',如果你在那里请帮助我。 @Yogesh
    • generate_verification_code 给了我这个错误 AttributeError: 'bytes' object has no attribute 'encode'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2015-09-12
    • 1970-01-01
    • 2011-08-19
    • 2013-05-04
    • 2019-10-09
    相关资源
    最近更新 更多