我在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时都这样做。 但我不知道怎么做。 需要你的帮助
答案 0 :(得分:3)
所以这就是我想你想做的事情:在每个页面上显示一个搜索输入表格(以适用者为准),并且只使用一个视图来处理搜索。
<form>
元素,其操作将转到您在上一步中完成的观看次数我没有得到的是,您是否需要搜索恰好是本地页面上的搜索? (例如,在此论坛中搜索)
要获得查询,您只需按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'是从任何其他上一页开始的搜索。