-3

这是我在浏览器中得到的错误图像

我是 python 新手,几乎没有试图从同一个函数中的另一个 if 语句中找出使用变量的问题

这是我的代码:

 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'))
4

1 回答 1

1

问题如下:

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

您仅selected_membershipifis时分配True。因此,在您的情况下,您会收到Variable referenced before assignment错误,因为ifis False。因此selected_membership从不分配。

如果你做这样的事情

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

它应该工作。

于 2019-09-20T06:37:08.510 回答