Ссылка на локальную переменную 'cid' перед присвоением

Я пытаюсь добавить метод оплаты. Я также добавил Getway и Get Success Message. Теперь я хочу показать сообщение об успехе с cid и именем на странице моего шаблона. Когда я хочу получить контекстные данные, я получаю This Error. ** Локальная переменная 'cid' упоминается перед присвоением. ** Мой код:

class CheckoutSuccessView(View):
    model = Transaction
    template_name = 'success.html'

    
    def get(self, request, *args, **kwargs):

        # return render(request, self.template_name,{'transaction':transaction})
        return HttpResponse('nothing to see')

    def post(self, request, *args, **kwargs):

        data = self.request.POST
        
        
        try:
            Transaction.objects.create(
                name = data['value_a'],
                cid = data['value_b'],
                tran_id=data['tran_id'],
                val_id=data['val_id'],
                amount=data['amount'],
                card_type=data['card_type'],
                card_no=data['card_no'],
                 ...
                 ...

            )
            messages.success(request,'Payment Successfull')

            name = data['value_a'],
            cid = data['value_b'],
            
            

            

        except:
            messages.success(request,'Something Went Wrong')

        
        

            
        context = {
                'cid': cid,
                'name' : name
                 }

        return render(request, 'success.html', context)

В случае, если произошло исключение, cid будет неопределено. Поэтому его нужно определить в блоке except, например cid = None. Или вы можете определить его перед блоком try.

     try:
        .......
        cid = data['value_b']
    except:
        .......
        cid = None

Or

    cid = None

    try:
        .......
        cid = data['value_b']
    except:
        .......

Вы можете пропустить блок или поставить лишний отступ. Определите его перед блоком попыток.

Вы можете попробовать следующее:

    model = Transaction
    template_name = 'success.html'
    
    def get(self, request, *args, **kwargs):

        # return render(request, self.template_name,{'transaction':transaction})
        return HttpResponse('nothing to see')

    def post(self, request, *args, **kwargs):

        data = self.request.POST

        name = data['value_a'],
        cid = data['value_b'],

        try:
            Transaction.objects.create(
                name = data['value_a'],
                cid = data['value_b'],
                tran_id=data['tran_id'],
                val_id=data['val_id'],
                amount=data['amount'],
                card_type=data['card_type'],
                card_no=data['card_no'],
                 ...
                 ...

            )
            messages.success(request,'Payment Successfull')

        except:
            messages.success(request,'Something Went Wrong')

        context = {
                'cid': cid,
                'name' : name
                 }

        return render(request, 'success.html', context)
    ```

* I think you are using sslcommerz-lib for SSLCOMMERZ PAYMENT GATEWAY.*
Вернуться на верх