用cherry.py调用一个函数

时间:2012-01-05 21:46:24

标签: python cherrypy cheetah

所以我做了一些网页开发,由于我的雇主设定的一些限制,我需要使用猎豹和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

1 个答案:

答案 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