显示来自搜索 API 的结果



我正在尝试掌握web2py/python。我想让用户填写搜索表单,他们搜索的术语被发送到我的 python 脚本,该脚本应该将查询发送到 blekko API 并将结果输出到新的 HTML 页面中。我已经实现了以下代码,但我没有显示正常的索引页面,而是直接从 blekko 获得 html 响应,搜索栏中出现"%(查询)"/html。真的需要一些帮助!

default/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

我认为您误解了字符串格式的工作原理。您仍然需要将地址和查询放在一起:

address = "http://www.blekko.com/?q='%(query)s'+/html&auth=<mykey>" % dict(query=request.vars.query)

在表单中添加隐藏字段,将其称为"已提交"。然后重新格式化控制器功能,如下所示:

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()

这将显示您的索引页面,除非表单已提交并且页面收到"已提交"表单变量。

/html 不执行任何操作。很高兴您的问题得到解答。这里有blekko搜索api的python客户端代码:https://github.com/sampsyo/python-blekko

相关内容

  • 没有找到相关文章

最新更新