t***q 发帖数: 418 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: treeq (treeq), 信区: Programming
标 题: 如何用python web.py web service 做 multiple parameters 的
发信站: BBS 未名空间站 (Sun Mar 22 23:14:33 2015, 美东)
大家好。我的那个web service 做成了。用了python 的 web.py.
install web.py
cd webpy
编辑python web service.
#!/usr/bin/env python
urls = ('/title_matching2','title_matching2')
app = web.application(urls,globals())
class title_matching2:
def __init__(self):
self.hello = "hello world"
def GET(self):
getInput = web.input(name="World")
processing the data, return the hash table, I wanted
return gg
if __name__ == "__main__":
app.run()
然后 run 这个 web service , ./some.py, 再call:
links http://localhost:8080/title_matching2?title=diehard
会返回一个hash table. 正是我想要的。
但是如果run multiple parameters 的话:
代码如下:
usr/bin/env python
urls = ('/title_matching4','title_matching4')
app = web.application(urls,globals())
class title_matching4:
def __init__(self):
self.hello = "hello world"
def GET(self):
getInput = web.input(title="World",prod="type")
title1=str(getInput.title)
prod1=str(getInput.prod)
processing the data, return the hash table I wanted.
return qq
if __name__ == "__main__":
app.run()
然后再run ./rest9.py
再打开一个link:
links http://localhost:8080/title_matching4?title=diehard&prod=feature
就没有hash table 返回。虽然我想返回hash table.
只是出现如下东西在screen 上:
ubuntu@ip-10-0-0-126:~$ links http://localhost:8080/title_matching4?title=diehard&prod=feature
[1] 1190
请问这是为什么?
为什么不能打开一个连接,并有hash table 返回?
多谢!
|
l*****r 发帖数: 15615 | |
t***q 发帖数: 418 | 3 多谢回复。请问你知道答案吗?知道的话,我有包子给你!
【在 l*****r 的大作中提到】 : 您这也是单干的节奏呗? : 赞。
|
l*****r 发帖数: 15615 | 4 说实话,我没做过python web的东西,目前用到python的地方都是windows
application而已。
python就是这两年在工作上看书学的,因为会用到,所以不懂一般就是查网络或者
internet,毕竟现在的工作上,python只是些辅助小工具的语言,所以都是很快写完或
者改好,有错也能马上改。
我不知道你的multiple argument是怎么输入的。
但是我找到有个例子是这样的,一个form的提交,我没看出你写的有问题,可能还是在
application 方面的问题?
def POST(self):
form = web.input(name="Nobody", greet="Hello")
greeting = "%s, %s" % (form.greet, form.name)
return render.index(greeting = greeting)
source:
http://learnpythonthehardway.org/book/ex51.html
good luck
【在 t***q 的大作中提到】 : 多谢回复。请问你知道答案吗?知道的话,我有包子给你!
|
p**r 发帖数: 5853 | 5 他的代码写的method是get
大概看了下,
好像问题是他想在browser里面得到本地application的运行结果,
然后
对本地app运行和browser运行区别不懂,
对如何读return的data不懂,
对data用不同format展现不懂,
对ws端读入两个以上参数不懂
都是最基本的问题,所以让他自己研究,不然下次还是一大堆问题。
【在 l*****r 的大作中提到】 : 说实话,我没做过python web的东西,目前用到python的地方都是windows : application而已。 : python就是这两年在工作上看书学的,因为会用到,所以不懂一般就是查网络或者 : internet,毕竟现在的工作上,python只是些辅助小工具的语言,所以都是很快写完或 : 者改好,有错也能马上改。 : 我不知道你的multiple argument是怎么输入的。 : 但是我找到有个例子是这样的,一个form的提交,我没看出你写的有问题,可能还是在 : application 方面的问题? : def POST(self): : form = web.input(name="Nobody", greet="Hello")
|
e*******o 发帖数: 4654 | 6 learn to debug. try to inspect getinput in both case. see what is in there.
that is the key point. |
t***q 发帖数: 418 | 7 非常非常感谢大家的回复。让我开窍许多。我再去好好研究,研究。你没有任何想法,
建议,也尽管提呀。多谢! |
t***q 发帖数: 418 | 8 多谢这位这么多的信息。
我的argument 不是在网页上输入的。
就是在linux 平台上,先run 那个 web.py api, ./someapi.py, 会显示:
http://xx ip:8080/
然后在另一个linux界面上用links command 打开要query 带arguement 的界面,如:
links http://localhost:8080/somesubpage?title=XXX&prod=XXX
然后,打开一个liux的界面,上面显示要得到的一个hash table.
多谢!
【在 l*****r 的大作中提到】 : 说实话,我没做过python web的东西,目前用到python的地方都是windows : application而已。 : python就是这两年在工作上看书学的,因为会用到,所以不懂一般就是查网络或者 : internet,毕竟现在的工作上,python只是些辅助小工具的语言,所以都是很快写完或 : 者改好,有错也能马上改。 : 我不知道你的multiple argument是怎么输入的。 : 但是我找到有个例子是这样的,一个form的提交,我没看出你写的有问题,可能还是在 : application 方面的问题? : def POST(self): : form = web.input(name="Nobody", greet="Hello")
|
l*****r 发帖数: 15615 | 9 我另一个帖子一直说你可以开私塾,看来真是有这水平,不错。
【在 p**r 的大作中提到】 : 他的代码写的method是get : 大概看了下, : 好像问题是他想在browser里面得到本地application的运行结果, : 然后 : 对本地app运行和browser运行区别不懂, : 对如何读return的data不懂, : 对data用不同format展现不懂, : 对ws端读入两个以上参数不懂 : 都是最基本的问题,所以让他自己研究,不然下次还是一大堆问题。
|
l*****r 发帖数: 15615 | 10 我好像还没用过GET method,都是自己写类似这样的需要的,如果需要的话。
我再去查查这些基本知识哈。
【在 t***q 的大作中提到】 : 多谢这位这么多的信息。 : 我的argument 不是在网页上输入的。 : 就是在linux 平台上,先run 那个 web.py api, ./someapi.py, 会显示: : http://xx ip:8080/ : 然后在另一个linux界面上用links command 打开要query 带arguement 的界面,如: : links http://localhost:8080/somesubpage?title=XXX&prod=XXX : 然后,打开一个liux的界面,上面显示要得到的一个hash table. : 多谢!
|
|
|
t***q 发帖数: 418 | 11 多谢。我用curl 做了一个testing,估计知道问题在哪里了。其实用 curl 做testing ,
比用links 直接打开网页更容易查出问题所在。明天如果弄出来了,回头告诉大家。
【在 l*****r 的大作中提到】 : 我好像还没用过GET method,都是自己写类似这样的需要的,如果需要的话。 : 我再去查查这些基本知识哈。
|
p**r 发帖数: 5853 | 12 python真没玩过,不然可以帮你debug一下,
你问问张老三,他搞不好玩过. |
t***q 发帖数: 418 | 13 大家好。
我后来又找到一个可以做query的package 叫flask.也是在python 里。
用它写了一个multiple parameters 的query,差不过如下:
http://stackoverflow.com/questions/15182696/multiple-parameters
还是用links 打开一个网页
links http://127.0.0.1:5000/api?name=XXX&prod=XXX
没有回应。只是出现一个随机数,在screen上。
但是用curl就能返回想要的东西:
curl -XGET 'http://127.0.0.1:5000/api?name=XXX&prod=XXX'
而且用curl -XGET作用在以前用web.py的东西上也能得到想要的。但是,只是在screen
上显示一堆东西。并不是打开网页。
请问这是为什么?就是说用curl,不管怎样都能返回想要的东西,用links 不管怎样都
不能返回想要的东西。这样一来只要curl能跑出来东西,是不是就成了?
多谢! |
e*******o 发帖数: 4654 | 14 做query的是request
你终于找到flask了
flask 有本书 你找电子版好好看看就不用来问问题了
screen
【在 t***q 的大作中提到】 : 大家好。 : 我后来又找到一个可以做query的package 叫flask.也是在python 里。 : 用它写了一个multiple parameters 的query,差不过如下: : http://stackoverflow.com/questions/15182696/multiple-parameters : 还是用links 打开一个网页 : links http://127.0.0.1:5000/api?name=XXX&prod=XXX : 没有回应。只是出现一个随机数,在screen上。 : 但是用curl就能返回想要的东西: : curl -XGET 'http://127.0.0.1:5000/api?name=XXX&prod=XXX' : 而且用curl -XGET作用在以前用web.py的东西上也能得到想要的。但是,只是在screen
|
h*******s 发帖数: 8454 | 15 links是干啥的 你要是想打开网页也可以用浏览器啊
screen
【在 t***q 的大作中提到】 : 大家好。 : 我后来又找到一个可以做query的package 叫flask.也是在python 里。 : 用它写了一个multiple parameters 的query,差不过如下: : http://stackoverflow.com/questions/15182696/multiple-parameters : 还是用links 打开一个网页 : links http://127.0.0.1:5000/api?name=XXX&prod=XXX : 没有回应。只是出现一个随机数,在screen上。 : 但是用curl就能返回想要的东西: : curl -XGET 'http://127.0.0.1:5000/api?name=XXX&prod=XXX' : 而且用curl -XGET作用在以前用web.py的东西上也能得到想要的。但是,只是在screen
|
t***q 发帖数: 418 | 16 links 是ubuntu上用来打开网页的一个工具。主要我的linux是登录远程的一个linux机
器,所以用local的网页浏览器无法打开页面。
【在 h*******s 的大作中提到】 : links是干啥的 你要是想打开网页也可以用浏览器啊 : : screen
|