2013-08-24 54 views
1

我想通過查詢進行搜索,如下所示。如何編碼匹配'/ search?query = a'

http://localhost:8080/search?query=a 

HTML

... 
    <form class="navbar-form navbar-right" name="searchform" action="/search" method="post"> 
    <div class="form-group"> 
     <input class="form-control" placeholder="Any keyword" type="text" name="query" /> 
    </div> 
     <button class="btn btn-success" type="submit">Search</button> 
    </form> 
... 

routes.py

... 
import handlers 

_routes = [ 
    RedirectRoute('/search?query=<.*>', handlers.SearchHandler, name='search', handler_method='post') 
] 
... 

handlers.py

... 
class SearchHandler(BaseHandler): 
    def get(self): 
     params = { 
      'query': '', 
      'offset': '0' 
     } 
     self.doSearch(params) 

    def doSearch(self, params): 
     docs = search.Index(name='indexed_doc') 
     query = params.get('query', '') 
     try: 
      offset_value = int(params.get('offset' or 0)) 
     except ValueError: 
      offset_value = 0 
     try: 
      search_query = search.Query(... 

結果反對: '?/搜索查詢= < *>' 在routes.py
error_handler.py:71]錯誤403:拒絕訪問此資源。
module.py:593]缺省: 「POST /搜索HTTP/1.1」 403 2555

針對結果: '/search(.*)' 在routes.py
error_handler.py:71]錯誤404:資源找不到。
module.py:593]默認:「POST /搜索HTTP/1.1」404 2543

如何爲它編碼正則表達式?或者什麼是錯的?
在此先感謝。

+0

看來你沒有正確編寫URL。您是否嘗試首先發布固定查詢,就像在您的localstorage示例中一樣? – collapsar

+0

您是否知道如果爲查找字符串設置僅用於/ search的路由仍然會匹配? – Greg

+0

@collapsar是的,我有。只需並行修改查詢問題。我也會在這裏更新代碼 – tknv

回答

3

我認爲有幾個問題:

  1. 難道你真的想要一個RedirectRoute?是否有必要重新發送郵件請求?
  2. 當您發佈數據的數據(query)應存放在請求主體,而不是在URL,像/search?query=a+query
  3. 在許多項目中,我所看到的,網址正則表達式不包括GET參數,它通常是高達處理器來執行某些GET參數,可以我不知道,如果有多個PARAMS GET PARAM爲了保證...

,你可以更改爲GET請求:

 <form class="navbar-form navbar-right" name="searchform" action="/search" method="get"> 

    <div class="form-group"> 
     <input class="form-control" placeholder="Any keyword" type="text" name="query" /> 
    </div> 
     <button class="btn btn-success" type="submit">Search</button> 
    </form> 

import handlers 

_routes = [ 
    ('/search', handlers.SearchHandler, name='search') 
] 

+0

非常感謝您的快速響應。我不需要RedirectRoute,現在使用只是路由,也沒有獲得參數,並修復其他部分,現在看來工作。 – tknv

相關問題