I'm using an ajax call to default.py controller. The default.py sets a
session variable. Paraphrased, it looks like this:
# model
if not session.myvars:
session.myvars = dict(
somevar=dict(),
othervar=dict(),
...
)
# view
...
ajax("{{= URL('default', 'setvar', args=[...])}}",[],":eval");
...
# default.py
if False:
session = current.session # to make Eclipse happy
def setvar():
...
del session.myvars['somevar']
...
return ''
In other controllers, the session.myvars['somevar'] is given a useful value.
Here's the really strange thing. If the ajax script is triggered, the
session.myvars['someval'] dict gets deleted as desired. However, only
temporarily! When another controller later on uses session.myvars, the old
session.myvars['somevar'] is still in existence.
If I reproduce this by putting the del session.myvars['somevar'] in one of
my other controllers, the session.myvars['somevar'] gets deleted
permanently, as desired.
This doesn't just happen for deleting session variables. It also happens
for setting session variables inside the default.py controller.
OK, here's another clue. Ready? When I put a breakpoint in eclipse and stop
the default controller from executing straight through, then the session
variable gets deleted for sure.
Why is this happening? This has got my head spinning! Is there something
special about default.py that I don't know about? Are you not supposed to
manipulate session variables in there? Is there a cache issue going on here?
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
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/d/optout.