【问题标题】:How to coding match '/search?query=a'如何编码匹配'/search?query=a'
【发布时间】:2013-08-27 10:25:25
【问题描述】:

我想按查询搜索,如下所示。

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

result against: '/search?query=<.>' at routes.py
error_handler.py:71] 错误 403:对此资源的访问被拒绝。
module.py:593] 默认值:“POST /search HTTP/1.1”403 2555

结果反对:'/search(.*)' at routes.py
error_handler.py:71] 错误 404:找不到资源。
module.py:593] 默认值:“POST /search HTTP/1.1”404 2543

如何为它编写正则表达式?或者有什么问题?
提前致谢。

【问题讨论】:

    标签: python regex google-app-engine webapp2


    【解决方案1】:

    我认为有几个问题:

    1. 你真的想要RedirectRoute吗?是否有必要在发布请求时重定向?
    2. 当您发布数据时,数据 (query) 应存储在请求正文中,而不是 URL 中,例如 /search?query=a+query
    3. 在我见过的许多项目中,url 正则表达式不包含 GET 参数,通常由处理程序来强制执行某些 get 参数,我不知道如果有多个参数,是否确保 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')
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 2010-09-23
      • 2013-05-26
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2012-06-03
      相关资源
      最近更新 更多