У меня есть Джанго и я пытаюсь сохранить объект в Джанго сессии Название переменной, и пытается получить доступ, что в перенаправлены зрения, но его показ keyerror
нижеКак сохранить объект в рамках Джанго сессий
def payment(request):
if request.method == 'POST':
form = CardForm(request.POST)
if form.is_valid():
data = form.cleaned_data
response = response_from_payment_gateway(data)
request.session['response'] = response
return HttpResponseRedirect(reverse('paygate:payment_success'))
else:
form = CardForm(initial={'number':'4242424242424242'})
return render_to_response('payment_form.html',{'form': form})
def PaymentSuccess(request):
print request.session['response'],"=================>"
response = None
return render_to_response("payment_success.html", {'response':response}, context_instance=RequestContext(request))
Результат
Internal Server Error: /payment/success/
Traceback (most recent call last):
File "/home/Envs/app/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/user/virtualenvironment/apps/app/payment/views.py", line 120, in PaymentSuccess
print request.session['response'],"=================>"
File "/home/Envs/app/local/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py", line 46, in __getitem__
return self._session[key]
KeyError: 'response'
Так я получаю обратно объект ответа от шлюза оплаты, который содержит сведения о транзакции, и я пытаюсь сохранить, что в session framework variable
называется response
, как указано выше.
И я пытаюсь получить доступ к переменной под названием response
в перенаправленном виде PaymentSuccess
как request.session['response']
и получить вышеупомянутую ошибку.
так как мы можем отправить/сохранить объекты в sessions
в django?
В выше объекта ответа будет иметь следующий вид
{'status': 'SUCCESS', 'response': <Charge charge id=ch_2OXdxxxxNVw at 0xb508e76cL> JSON: {
"amount": 100,
"amount_refunded": 0,
"balance_transaction": "txxxn_xxxxxxxxO",
"captured": true,
"currency": "usd",
"customer": null,
"description": null,
}}
Вы непосредственно посещаете /payment/success. В этом случае вы получите эту ошибку. –
sorry din't get u, что это значит «непосредственно посещать»?, Если форма действительна, я получаю ответ от шлюза и пытаюсь сохранить этот ответ в сеансе и перенаправлять на другую страницу и пытаться использовать этот сеанс в перенаправленной странице, это я пытаюсь сделать :) –
Не могли бы вы сделать что-то подобное и рассказать мне о выходе. Создайте объект Response и сериализуйте его из django.core.serializers в json-формате и сохраните его в сеансе. а затем получить его из сеанса десериализации его и получить объект и получить доступ к нему. –