Браузер показывает переменную, на которую ссылаются до назначения - PullRequest
0 голосов
/ 20 сентября 2019

вот изображение ошибки, которую я получаю в браузере

Я новичок в python и с трудом пытался выяснить проблему использования переменной из другогоесли оператор в той же функции

вот мой код:

 def post(self, request, **kwargs):
    selected_membership_type = request.POST.get('membership_type')

    user_membership = get_user_membership(request)

    user_subscription = get_user_subscription(request)

    selected_membership_qs = Membership.objects.filter(
                    membership_type=selected_membership_type)
    if selected_membership_qs.exists():
        selected_membership = selected_membership_qs.first()
    ''' 
    ==========
    VALIDATION
    ==========  
    ''' 
    # selected_membership = selected_membership_qs.first()

    if user_membership.membership == selected_membership:
        if user_subscription == None:
            messages.info(request,"You already have this membership.Your \
                next payment is due {}".format('get this value from stripe'))
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

1 Ответ

1 голос
/ 20 сентября 2019

Проблема заключается в следующем:

if selected_membership_qs.exists():
    selected_membership = selected_membership_qs.first()

Вы присваиваете selected_membership, только если if равно True.Таким образом, в вашем случае вы получаете ошибку Variable referenced before assignment, потому что if равно False.Поэтому selected_membership никогда не назначается.

Если вы делаете что-то подобное

selected_membership = None
if selected_membership_qs.exists():
    selected_membership = selected_membership_qs.first()

, оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...