Just found the solution. Looking at the source of auth.logout() at http://web2py.com/examples/static/epydoc/web2py.gluon.tools-pysrc.html#Auth.logout, there is a line here:
current <http://web2py.com/examples/static/epydoc/web2py.gluon.tools-pysrc.html#>.session <http://web2py.com/examples/static/epydoc/web2py.gluon.tools-pysrc.html#>.flash = self.messages.logged_out which looks like the cause of session.flash being assigned None. On chapter 9 of the book (http://web2py.com/books/default/chapter/29/9), there is a bunch of auth.messages that can be customized, such as the one for logging out: auth.messages.logged_out = T('You are logged out.') Now session.flash (actully response.flash after the redirect) will have whatever message I set. On Wednesday, 7 March 2012 00:02:08 UTC, danny wrote: > > Hello. I'm trying to customize the login and register forms as follows: > > - user() function does not return auth(), instead display two forms > separately like this: > > {{if not auth.is_logged_in():}} > {{login_form = auth.login()}} > {{=login_form.custom.begin}} > ... > {{=login_form.custom.submit}} > {{=login_form.custom.end}} > > {{reg_form = auth.register()}} > {{=reg_form.custom.begin}} > ... > {{=reg_form.custom.submit}} > {{=reg_form.custom.end}} > {{pass}} > > - Inside user() function it logs the user out manually when "http > ://.../[app]/default/user/logout" is requested: > > if request.args(0) == 'logout': > session.flash = T('You are logged out.') > auth.logout() > > Everything works except session.flash is wiped clean when auth.logout() > automatically redirects to default/index. How can I keep session.flash > after redirect? Thanks. >