如何在Django中的render()之后将参数传递到url?

时间:2017-11-10 17:52:42

标签: python django url url-routing google-search

我正在尝试使用Google's Custom Search Engine产品在个人网络应用的页面上显示查询结果。

CSE的工作原理是它将URL中的参数作为搜索词:即www.mydomain.com/results.html?q=hello+world将返回页面上“hello world”查询的结果。你在页面上放了一些JS代码,所以它有点像黑盒子。

但是,在URLrouting render()Django,我猜测基础是www.mydomain.com/results被路由到views.resultsrenders results.html称为www.mydomain.com/results

通过表单提交查询并将其传递给www.mydomain.com/results.html?q=hello+world而不是重定向到www.mydomain.com/results并让Django呈现结果/ html文件的最佳做法是什么?< / p>

对不起,我比较新。我可以尝试将事情拼凑在一起,但我觉得必须有一种非常有效的方法来处理这种情况。感谢您的理解

2 个答案:

答案 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