I've realized re-using code becomes quite a hastle - for example if you use 2 or 3 column layout for web, 1 column layout works best for mobile.
I've created new controller and views to be shown on the mobile (even if they are duplicated), and use redirect() and auth.settings.myfunction_next where myfunction = change_password or login or logout or retrieve_password etc. Then you can have corresponding functions in your mobile controller, like mobile.py ------------- def login(): return dict(form=auth.login()) login.html -------------- {{extend 'm_layout.html'}} {{=form}} and so on.