Как добавить параметры поиска в URL страницы поиска? - PullRequest
0 голосов
/ 17 сентября 2011

Я хочу изменить URL-адрес результатов поиска с /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)            
...

UPDATE

Благодаря 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 голосов
/ 18 сентября 2011

Является ли свойство 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...