Как исправить TypeError: Unicode-объекты должны быть закодированы перед хэшированием - PullRequest
0 голосов
/ 21 апреля 2020

Кто-нибудь знает, как решить следующую ошибку ------ization_key = hashlib.sha1 (short_hash + base) .encoding.hexdigest () TypeError: Unicode-объекты должны быть закодированы перед хэшированием ----- all код относительно проблемы прилагается ниже. Вся помощь приветствуется!

import stripe
import random
import hashlib

from django.conf import settings
from django.contrib.auth.signals import user_logged_in
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile, UserStripe, EmailConfirmed

stripe.api_key = settings.STRIPE_SECRET_KEY

def get_create_stripe(user):
    new_user_stripe, created = UserStripe.objects.get_or_create(user=user)
    if created:
        customer = stripe.Customer.create(
            email = str(user.email)
        )
        new_user_stripe.stripe_id = customer.id
        new_user_stripe.save()


@receiver(post_save, sender=User)
def create_profile(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()).encode('utf-8')).hexdigest()[:5]**
            base, domain = str(user.email).split("@")
            **activation_key = hashlib.sha1(short_hash+base).encode('utf-8').hexdigest()**
            email_confirmed.activation_key = activation_key
            email_confirmed.save()
            emailconfirmed.activate_user_email()
...