2012-07-03 234 views
0

我试图去与web2py/python握手。我想让用户填写搜索表单,他们搜索的术语被发送到我的python脚本,该脚本应该将查询发送到blekko API并将结果输出到新的HTML页面中。我已经实现了下面的代码,但不是我正常的索引页面出现,我直接从blekko得到html响应,'%(query)'/ html出现在搜索栏中。真的需要一些帮助!默认/ index.html页面的default.py控制器显示搜索结果API

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 

回答

1

我想你是误会了如何string formatting作品

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

Python代码上

HTML表单。您需要将地址和查询放在一起:

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

Thanks Martijn。这是他们的API请求URL的格式,它可以完美的工作,如果你用搜索词替换'%(query' – adohertyd

+0

@adohertyd:我有一个轻微的错字;我添加了缺少的'''并且在blekko上测试了它.com。我的答案中的地址减去'auth'参数,给出了我的结果 –

+0

啊,当然,单引号使查询成为一个短语;我将它们添加回 –

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

这将显示你的索引页,除非表单提交和收到的页的“提交”表单变量。