我尝试以编程方式POST而不是使用网络表单。为此,我使用从https://pypi.python.org/pypi/MultipartPostHandler/下载的MultipartPostHander模块。
它看起来运行良好(即,与Web表单POST请求执行的操作相同),但user.get_current_user()在POST页面处理程序中返回None。相比之下,如果POST请求是由Web表单提交的,则相同的POST页面处理程序会正确返回用户信息。
还尝试了海报(http://atlee.ca/software/poster/index.html)并遇到了完全相同的问题。
为什么会发生这种情况?提前谢谢。
class first_page_handler(basehandler.BaseHandler):
def get(self):
user = users.get_current_user()
if user:
raw_upload_url = webapp2.uri_for('test_module')
qimage_upload_url = r'http://localhost:8080'+raw_upload_url
params = {'param1': 'param'}
opener = urllib2.build_opener(multipost.MultipartPostHandler)
urllib2.install_opener(opener)
req = urllib2.Request(qimage_upload_url, params)
response = urllib2.urlopen(req) # <<<< POST request submitted
text_response = response.read().strip()
return self.response.write("<html><body><p>"+text_response+"</p></body>
</html>")
else:
login_url = users.create_login_url("/admin")
context = {'login_url': login_url}
self.render_response('admin/login.html', **context)
class post_page_hander(basehandler.BaseHandler):
def post(self):
user = users.get_current_user() # << Returns NONE
return self.response.write("<html><body><p>"+user.email()+"</p></body></html>")
答案 0 :(得分:0)
您没有在请求中设置任何Cookie,因此服务器不知道当前用户是什么。 (你正在做的事情是不寻常的......可能有更好的方式去做你想做的事。)