我在一个页面上使用Django + Appengine,该页面既有正常的HTML请求来获取页面,也有一个使用jQuery的AJAX请求。在正常请求中,它可以正常加载当前用户和会话信息。但是,对于AJAX请求,未设置self.user且users.get_current_user()不返回任何内容。
两个处理程序位于同一个域中,甚至位于相同的.py文件中。使用WING IDE进行调试,两者之间的唯一区别是在正常请求中,webob._parsed_cookies设置为会话ID,而在AJAX请求中则根本不设置。虽然,两者都在request._environ.HTTP_COOKIE中显示相同的会话ID。
这让我觉得它是一个AJAX请求,而不是HTML请求让GAE不知道加载会话信息。想法?
编辑:对不起,这是我的错。我没有意识到我正在使用用户的自定义用户实现使其更像django而不是谷歌用户 - 我跳过了一个步骤,涉及手动从cookie中获取会话ID并查找对应于的活动用户该会话ID并将其设置为请求的“用户”实例变量。这就是会话ID在请求中但未设置用户对象的原因。
答案 0 :(得分:0)
您当然需要在Cookie中设置会话ID,因为这是django确定记录哪个用户的方式。您必须发布一些jquery代码和相应的视图,以尝试猜测,出现了什么问题。