我正在尝试使用Google's Custom Search Engine
产品在个人网络应用的页面上显示查询结果。
CSE
的工作原理是它将URL中的参数作为搜索词:即www.mydomain.com/results.html?q=hello+world
将返回页面上“hello world”查询的结果。你在页面上放了一些JS
代码,所以它有点像黑盒子。
但是,在URL
上routing
render()
和Django
,我猜测基础是www.mydomain.com/results
被路由到views.results
将renders results.html
称为www.mydomain.com/results
。
通过表单提交查询并将其传递给www.mydomain.com/results.html?q=hello+world
而不是重定向到www.mydomain.com/results
并让Django
呈现结果/ html文件的最佳做法是什么?< / p>
对不起,我比较新。我可以尝试将事情拼凑在一起,但我觉得必须有一种非常有效的方法来处理这种情况。感谢您的理解
答案 0 :(得分:0)
你完全过分思考这个问题。此处与任何其他请求没有什么不同:表单通过GET提交到结果视图,视图从request.GET["q"]
或任何地方获取搜索查询,搜索并将结果传递给模板。 / p>
答案 1 :(得分:0)
感谢您的回复,但我不确定这会有效。
首先,Google CSE JS代码如下所示:
<div class="container">
<gcse:searchresults-only></gcse:searchresults-only>
</div>
我不确定它是否使用了request.GET [“q”]方法。
其次,我希望处理“q”参数以及表单发送之外的其他内容。这有意义吗?
我希望工作流程如下:
query = {'keywords':request.GET.get('k'),
'urls':request.GET.get('u'),
'collections':request.GET.getlist('c'),
'filetypes':request.GET.getlist('f')
}
query_final = create_query(query) # Some other function
return render(request,'app_search/results.html') # Need to go to domain.com/results.html?q=blahblahblah