网络开发中使用Cherrypy避免重定向仍用HTTP调用其他函数

我进行了一些网络开发工作。因为雇主设置了一些限制,所以我得使用 cheetah 和 cherrypy。我有这样的表单,在提交表单时会运行一个函数,并且从这个函数中,我通过 HTTPRedirect 来调用另一个函数。我期望的是能够在不进行重定向的情况下调用它。这就是一个例子。

网络开发中使用Cherrypy避免重定向仍用HTTP调用其他函数

@cherrypy.expose
def onSubmit(**kwargs):
  ##Do something
  ##Do something
  ##Do something
引发 cherrypy.HTTPRedirect 并指向 "/some_other_location/doSomethingElse?arg1=x&arg2=y"

现在我想在运行第二个函数之后做更多的事情,然而我做不到。因为自从我进行了代码重定向之后,就到此结束了。所以我的问题是,是否存在一种方法,可以在不进行重定向的情况下运行其他函数,同时仍然使用 HTTP。在 javascript 中,我会使用 AJAX 并将 url 传递给它,将输出存储在加载器变量中,但我不知道如何使用 cherrypy 来执行此操作。

最佳答案

不使用重定向的方式,而是运用其中一个标准的 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:
使用 urllib2 库打开指定的 url 后,读取其内容并赋值给 data 变量。
  except urllib2.HTTPError, e:
引发 cherrypy.HTTPError,其状态码为 500,错误信息为"HTTP error: %d",其中的 %d 被 e.code 所替代。
  except urllib2.URLError, e:
引发 cherrypy.HTTPError,状态码为 500,内容为“网络错误:%s”,其中 %s 被替换为 e.reason.args[1]的值
  ##Do something with the data

使用 cherry.py 来调用函数,关于这方面的介绍就到此为止啦,希望能对你有所帮助!

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读