2012-07-03 326 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() 

這將顯示你的索引頁,除非表單提交和收到的頁的「提交」表單變量。