thank you so much for your explaination, antony, i thought it was an illegal operation in web2py work flow or programming logic. but some times it's wise to decide it whether use redirect or return locals(), or is there any other options to do this except using redirect or return locals()?
here is the example that can not use return locals(), because when the condition is true, it will return an error: def bill(): if not session.order: session.flash=T("Order Now!!!") redirect(URL('product')) for k, v in session.order.items(): if v==0: del session.order[k] * redirect(URL('order')) # if use return locals() an error will occur* import datetime import uuid invoice_no=str(datetime.date.today())+'-'+str(uuid.uuid4()) grand_total=sum(db.product(id).unit_price*qty for id, qty in session.order.items()) form=SQLFORM.factory(Field('note', 'text')) if form.accepts(request,session): for key, value in session.order.items(): db.sale.insert(invoice_no=invoice_no, product_id=key, quantity=value, unit_price=db.product(key).unit_price, total_price=db.product(key).unit_price*value, grand_total=grand_total, note=form.vars.note) db(db.product.id==key).update(quantity=db.product.quantity - value) session.order.clear() session.flash=T("Thank you for your Order") redirect(URL('invoice', args=invoice_no)) return dict(order=session.order, form=form, grand_total=grand_total) -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.