如何将搜索参数添加到搜索页面网址?

时间:2011-09-17 17:44:39

标签: python google-app-engine

我想将搜索结果网址从/searchhandler更改为/searchhandler?search_string=[search string],以便我可以重定向到该搜索结果页面。我该怎么做?

这是搜索中的搜索表单:

self.response.out.write("""
<form name="search_form" action="/searchhandler" method="post"><br />
<input type="text" name="search_string" size=40>
<input type="submit" value="search tags">
</form>""")

这是SearchHandler:

class SearchHandler(webapp.RequestHandler):
    def post(self):
...

s = filter(None, f1.striplist(self.request.get("search_string").split(" ")))                
n = len(s)

if n==1:
    query = Main.all()
    query.filter("tag_list", s[0])
    query.order("-total_value")

    f1.display(query, self)            
...

更新

感谢MattoTodd。以下是根据his answer我的解决方案:

我改变了这样的形式:

search_string = ""
    self.response.out.write("""

    <form name="search_form" 
          action="/searchhandler?search_string=%s" 
          method="get">

     <br />
    <input type="text" 
           name="search_string" 
           size=40>
    <input type="submit" 
           value="search tags">
    </form>        
    """ % search_string)

1 个答案:

答案 0 :(得分:2)

“tag_list”属性是字符串列表吗?我会假设你正在尝试搜索标签?我会使用逗号分隔列表进行输入,而不是以空格分隔。

也不确定f1是什么

试试这个:

self.response.out.write("""
<form name="search_form" action="/searchhandler" method="GET"><br />
<input type="text" name="search_string" size=40>
<input type="submit" value="search tags">
</form>""")

和处理程序:

class SearchHandler(webapp.RequestHandler):
    def get(self):
        search_string = self.request.get("search_string", None)
        if not search_string:
            raise Exception("Missing Param")
        tags = [t.strip() for t in search_string.split(",")]
        if tags:
            query = Main.all()
            query.filter("tag_list IN", tags)
            query.order("-total_value")

        # Handle your results

编辑:在这种情况下,请使用请求方法GET而不是POST