【问题标题】:How to pass parameters into url after render() in Django?如何在Django中的render()之后将参数传递给url?
【发布时间】:2017-11-16 15:26:41
【问题描述】:

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

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

但是,在Django 上使用URL routingrender(),我猜基本情况是www.mydomain.com/results 被路由到views.results 调用renders results.htmlwww.mydomain.com/results

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

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

【问题讨论】:

  • 显示一些代码兄弟

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


【解决方案1】:

你完全想多了。这里与任何其他请求没有什么不同:表单通过 GET 提交到结果视图,视图从 request.GET["q"] 或任何地方获取搜索查询,进行搜索并将结果传递给模板。

【讨论】:

    【解决方案2】:

    感谢您的回复,但我不确定这是否有效。

    首先,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
    

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 2012-04-10
      • 2014-07-08
      • 2021-03-30
      • 2016-04-22
      • 2021-03-22
      • 2021-10-15
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多