Ссылка на локальную переменную '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.*