redirect - How to store an object in django sessions framework -
i have django , trying store object in django session varaible, , trying access in redirected view, showing keyerror below
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)) result
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' so getting response object payment gateway contains transaction details, , trying save in session framework variable called response above.
and trying access variable called response in redirected view paymentsuccess request.session['response'], , getting above mentioned error.
so how can send/save objects in sessions in django ?
in above response object of following form
{'status': 'success', 'response': <charge charge id=ch_2oxdxxxxnvw @ 0xb508e76cl> json: { "amount": 100, "amount_refunded": 0, "balance_transaction": "txxxn_xxxxxxxxo", "captured": true, "currency": "usd", "customer": null, "description": null, }}
the interpreter never reaches part
request.session['response'] = response this means either our form isn't valid or method of request isn't post
try replace
if request.method == 'post': with
if request.post: and if doesn't work set request.session['response'] other value make sure sessions framework isn't broken. need debug further, i'm 100% sure isn't session problem.
Comments
Post a Comment