所以我做了一些网页开发,由于我的雇主设定的一些限制,我需要使用猎豹和cherrypy。我有这个表单,在提交时运行一个函数,并从所述函数我通过HTTPRedirect调用另一个,我想要的是调用它而不重定向。这是一个例子
@cherrypy.expose
def onSubmit(**kwargs):
##Do something
##Do something
##Do something
raise cherrypy.HTTPRedirect("/some_other_location/doSomethingElse?arg1=x&arg2=y")
现在我想在运行第二个函数后做更多的事情,但我不能因为我重定向代码结束那里。所以我的问题是,有没有办法运行其他功能而不是重定向,但仍然使用HTTP。在javascript中我会使用AJAX并将其传递给url,将输出存储在loader变量中,但我不知道如何使用cherrypy
答案 0 :(得分:2)
不使用重定向,而是使用标准Python库之一来获取HTTP数据:
或其他可以说更好的第三方:
另外,不要忘记将相对网址转换为绝对网址,即使它是localhost:
为了帮助您入门,这是使用urllib2从您的示例派生的未经测试的代码段:
import urllib2
@cherrypy.expose
def onSubmit(**kwargs):
##Do something
##Do something
##Do something
url = "http://localhost/some_other_location/doSomethingElse?arg1=x&arg2=y"
try:
data = urllib2.urlopen(url).read()
except urllib2.HTTPError, e:
raise cherrypy.HTTPError(500, "HTTP error: %d" % e.code)
except urllib2.URLError, e:
raise cherrypy.HTTPError(500, "Network error: %s" % e.reason.args[1])
##Do something with the data