1

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

4

1 回答 1

2

不要进行重定向,而是使用标准 Python 库之一来获取 HTTP 数据:

或其他可以说更好的第三方:

另外,不要忘记将相对 url 转换为绝对 url,即使它是 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
于 2012-01-12T06:00:27.037 回答