我正在尝试使用web2py / python。我想让用户填写搜索表单,他们搜索的术语被发送到我的python脚本,该脚本应该将查询发送到blekko API并在新的HTML页面中将结果输出到它们。我已经实现了以下代码,但是我没有看到正常的索引页面,而是直接从blekko获取html响应,并在其搜索栏中显示'%(query)'/ html。真的需要一些帮助!
默认/ index.html页面上的HTML表单
<body>
<div id="MainArea">
<p align="center">MY SEARCH ENGINE</p>
<form name="form1" method="get" action="">
<label for="SearchBar"></label>
<div align="center">
<input name="SearchBar" type="text" id="SearchBar" value="" size = "100px"><br />
<input name="submit" type="submit" value="Search">
</div>
</form>
<p align="center"> </p>
default.py控制器上的Python代码
import urllib2
def index():
import urllib2
address = "http://www.blekko.com/?q='%(query)'+/html&auth=<mykey>"
query = request.vars.query
response = urllib2.urlopen(address)
html=response.read()
return html
答案 0 :(得分:1)
我认为你误解了string formatting的工作原理。您需要将地址和查询放在一起:
address = "http://www.blekko.com/?q='%(query)s'+/html&auth=<mykey>" % dict(query=request.vars.query)
答案 1 :(得分:1)
在表单中添加隐藏字段,将其命名为“已提交”。然后重新格式化控制器功能:
import urllib2
def index():
if request.vars.submitted:
address = "http://www.blekko.com/?q='%(query)'+/html&auth=<mykey>"
query = request.vars.query
response = urllib2.urlopen(address)
html=response.read()
return html
else:
return dict()
这将显示您的索引页面,除非提交表单并且页面收到“已提交”表单变量。
答案 2 :(得分:1)
/ html没有做任何事情。很高兴您的问题得到了解答。这里有blekko搜索API的python客户端代码:https://github.com/sampsyo/python-blekko