如何在搜索页面URL中添加搜索参数?

0 投票
1 回答
637 浏览
提问于 2025-04-17 02:30

我想把搜索结果的链接从 /searchhandler 改成 /searchhandler?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>""")

这是搜索处理程序:

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。下面是我根据 他的回答找到的解决方案:

我把表单改成了这样:

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 个回答

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。

撰写回答