I think that should work but I haven't tried it. What happens if you delete the first line "session.cart_items=..."? That's going to keep overwriting cart_items each time the controller is called.
You might have to ensure that cart_items is a list: items = session.cart_items if request.vars: if not session.cart_items: session.cart_items = [] session.cart_items.append({'id':request.vars.id ,'qty':request.vars.qyt}) The other thing I'm wondering is if you might need to re-write the list each time: items = session.cart_items or [] if request.vars: items.append({'id':request.vars.id ,'qty':request.vars.qyt}) session.cart_items = items