TypeError: Unicode-объекты должны быть закодированы перед хэшированием, создавая ключ ha sh для активации по электронной почте - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь создать как hash_key для активации электронной почты, но получаю сообщение об ошибке выше. Любые идеи, как я могу применить кодирование. Ниже мой код:

def user_created(sender, instance, created, *args, **Kwargs):
    user = instance

    if created:
        get_create_stripe(user)
        email_confirmed, email_is_created = EmailConfirmed.objects.get_or_create(user=user)
        if email_is_created:
            short_hash = hashlib.sha1(str(random.random()).hexdigest())[:5]
            base, domain = str(user.email).split('@')
            activation_key = hashlib.sha1(short_hash+base).hexdigest()
            email_confirmed.activation_key = activation_key
            email_confirmed.save()
            email_confirmed.activate_user_email()

post_save.connect(user_created, sender=User)

1 Ответ

1 голос
/ 06 февраля 2020

Вам нужно передать bytes методу hashlib.sha1() вместо string. Для этого вы можете просто использовать encode() так:

short_hash = hashlib.sha1(str(random.random()).encode()).hexdigest()[:5]
base, domain = str(user.email).split('@')
activation_key = hashlib.sha1((short_hash+base).encode()).hexdigest()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...