2012-05-23 45 views
1

我試圖從頁面發送HTML表單輸入到python腳本。這僅僅是爲了測試目的,所以忽略糟糕的代碼。基本上我不知道如何定義action=部分來引用python腳本中的search()函數。我只需要獲得基本功能的工作。我使用的web2py作爲框架這可能是相關的:將HTML表單輸入發送到python腳本

控制器:default.py

def index(): 
    return dict() 

def search(): 
    import urllib 
    q=request.vars.q 
    result1 = urllib.urlopen('http://www.google.com/search?q=%s' % q) 
    return dict(result1=result1) 

默認/ search.html:

{{extend 'layout.html'}} 
<form method=get action=???> 
<input name=q> 
<input type=submit value=search> 
</form> 

回答

1

它看起來像本身所服務的形式通過搜索()函數,所以你可以設置action="",它會提交回search()函數。另外,您應該在HTML屬性值周圍加引號,並且應該添加一些邏輯來檢查request.vars.q中是否有任何內容,因爲當頁面首次使用空格式加載時,沒有要處理的查詢。

+0

感謝這個安東尼,但它似乎並沒有工作。當我在搜索框中輸入一個字時,頁面會再次打開,並顯示空白搜索框。另外關於邏輯,request.vars.q不會只在表單被提交時才起作用。按照邏輯,你的意思是'如果request.vars.q爲null:做某事'? – adohertyd

+0

當您提交查詢時沒有顯示任何內容,因爲您的視圖對結果沒有任何影響 - 它只顯示錶單。問題在於結果是來自Google的完整HTML網頁,因此您無法輕易將其顯示在您的網頁中(您必須進行一些調整才能提取相關內容)。是的,通過邏輯,我的意思是'如果request.vars.q:[make the query]''。 – Anthony

+0

感謝您的好評安東尼非常讚賞 – adohertyd

1

你在那裏做什麼對於GET請求是正確的。對於POST請求,您需要傳遞字段作爲數據參數。

urllib.urlopen('http://www.google.com/search', data=urllib.urlencode({'q':'FOO'})) 

將搜索作爲POST請求進行搜索。

請參閱here瞭解更多信息。

+0

的確,但這只是一個愚蠢的例子。 Google向該請求返回「405:不允許的方法」。 – Peter

+0

但Google搜索應該是GET請求,而不是POST。另外,上面的'data'參數應該是'urllib.urlencode({'q':'FOO'})''。 – Anthony

+0

好的,但你回答這個例子有什麼問題? – Anthony

相關問題