在每个页面上搜索输入。 Django的

时间:2012-04-13 21:14:40

标签: python django search

我在Django上有一个网站。 我想在每个页面上创建一个搜索输入。 在一些“base.html”中,我为此搜索输入编写了新内容。

在views.py中我添加了类似的内容:

def main(request):
    if request.method == 'POST':
        search_string = request.POST['search_string']
        result = search(search_string)
        return direct_to_template(request, 'found_page.html', {'result': result})`

但我想在每一页都这样。

因此,我创建了新的函数“search_function(request)”并将其添加到views.py中的每个def。 或者我可以创建一个装饰器并在views.py。

中的每个def之前编写它

我不想每次添加新def时都这样做。 但我不知道怎么做。 需要你的帮助

2 个答案:

答案 0 :(得分:3)

所以这就是我想你想做的事情:在每个页面上显示一个搜索输入表格(以适用者为准),并且只使用一个视图来处理搜索。

  1. 创建一个处理搜索的视图
  2. 创建一个html页面,其中包含搜索的<form>元素,其操作将转到您在上一步中完成的观看次数
  3. 在base.html中包含或扩展它
  4. 我没有得到的是,您是否需要搜索恰好是本地页面上的搜索? (例如,在此论坛中搜索)

    要获得查询,您只需按request.GET['q']request.POST['q']或类似方式提供查询。

    def search(request):
      if 'q' in request.GET and request.GET['q']:
         // do something
    

    除非您的搜索(查询)更改数据库中查询结果的状态,否则您不想使用POST。请改用GET

答案 1 :(得分:0)

将表单的操作设置为转到其他搜索视图,并让一个函数负责搜索处理。您可以拥有一个专用的搜索页面,并执行相同的操作来检查表单是“POST”还是“GET”。 'POST'是从任何其他上一页开始的搜索。