我在Web2py中遇到会话对象问题。在localhost上,下面的代码完全正常。 Session对象存储了我需要的东西。但是,一旦我这样运行它:
$python web2py.py -i <myhomeip>
会话对象始终为None。我有session.clear(),但只有在发送电子邮件时,代码才会失败。如何才能创建/存在会话?
Ajax调用此函数:
def generateCart():
session.orderdetail = request.vars;
print "in generateCart() session is", session.orderdetail;
return None;
然后函数cart()访问session:
print "in cart() session.orderdetail", session.orderdetail;
if (len(session.orderdetail.items()) == 0):
print "in cart() order was empty"
redirect(URL('otherfn'));
pass
lOrderDetail = session.orderdetail;
当我作为localhost运行时,这个确切的代码有效。当我使用-i运行时,上面的print语句返回None。如果我做
print session
我没有。
我没有session.secure(),现在也不依赖于https。我真的很感激你的帮助。
答案 0 :(得分:1)
如果有人遇到这个问题,我想快速回答这个非常棒的问题。如果主持人认为这不具有建设性:我理解。
有几篇SO帖子对我很有帮助。主要是:How do I return the response from an asynchronous call?。以及此链接中接受的答案中的链接。
基本上,问题不在于ajax发送的内容,而在于(非常noob问题)。数据到达服务器,但不是在正确的时间。通过输入许多'console.log()'和print语句,我能够发现ajax没有到达。会话已经创建,但是在ajax到达之后。
问题仍然是为什么在localhost上它会100%的时间工作,但不会在公共主机上工作。我想这与loopback如何在localhost上工作有关,但我无法回答那部分 - 我不知道。
从中得到的教训:正确掌握基础知识(即ajax)。