显示搜索API的结果

时间:2012-07-03 12:52:01

标签: python forms web2py blekko

我正在尝试使用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">&nbsp;</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

3 个答案:

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