1 Востаннє редагувалося czereszniovski (01.03.2016 18:08:43)

Тема: Проблема з витягуванням значення з кукі Django

Доброго дня, пишу реферальну систему на pinax-referrals на django.
Ну як пишу, дописую декілька функцій.
І тут я зіткнувся з проблемою. Витягуємо значення з кукі:

    def ref_code(self, request):
        response = redirect(request.GET)
        referrer_code = response.COOKIES.get("referrer_code")
        return referrer_code

Функція активації користувача:

def activate(self, *args, **kwargs):
        username = self.validate_key(kwargs.get('activation_key'))
        if referrer_code in request.COOKIES:
            referrer_code = ref_code()
        if username is not None:
            user = self.get_user(username)
            if user is not None:
                user.is_active = True
                user.save()
                if referrer_code is not None:
                    referrer = referral.user.username
                    invited = Profile.objects.get(user = user)
                    invited.user_referrer = referrer
                    invited.save()
                    return invited
                return user
        return False

Висвічується помилка при активації через мило:

ocal variable 'referrer_code' referenced before assignment

Я в django новачок, тому прошу не судити строго, якщо зробив якусь дико-тупу помилку)
Прошу допомоги)

2

Re: Проблема з витягуванням значення з кукі Django

Якщо

if referrer_code in request.COOKIES

оця умова не виконається, то відповідно у вас не ініціалізується змінна

referrer_code

, а отже наступного разу -

if referrer_code is not None:

буде та помилка. Поставте на початку ф-ії щось на зразок:

referrer_code = None

А взагалі, код якийсь негарний, це самописка з нуля? Чи по якомусь шаблону?

3

Re: Проблема з витягуванням значення з кукі Django

Master_Sergius написав:

Якщо

if referrer_code in request.COOKIES

оця умова не виконається, то відповідно у вас не ініціалізується змінна

referrer_code

, а отже наступного разу -

if referrer_code is not None:

буде та помилка. Поставте на початку ф-ії щось на зразок:

referrer_code = None

А взагалі, код якийсь негарний, це самописка з нуля? Чи по якомусь шаблону?

def activate(self, *args, **kwargs):
        username = self.validate_key(kwargs.get('activation_key'))
        if username is not None:
            user = self.get_user(username)
            if user is not None:
                user.is_active = True
                user.save()
                return user
        return False

Ось так виглядала функція, допоки я її не спортив.
Може підкажете інші шляхи витягування значення з кукі в змінну?

4

Re: Проблема з витягуванням значення з кукі Django

Дивіться в сторону django.session, та й навіть з тим способом окей, тільки дописаний код трохи смущає.

Подякували: czereszniovski1