Django搜索功能

时间:2017-04-15 05:09:09

标签: python html django web

我在我的网站上添加了搜索功能,这样如果你转到www.mywebsite.com/search/texthere,它会显示所有带有title = texthere的歌曲。我想将此功能添加到我的索引页面。

在我的页面中,有一个输入框,用户可以在其中键入输入,按下提交以提交输入,但它会转到另一个页面。 我该如何解决这个问题?

urls.py

url(r'^search/(?P<query>[\w\-]+)/$', views.search, name='search'),

的index.html

<form action="/search/">
     <input type="text"  name="query" value="me"><br>
     <input type = "submit">
</form>

我想要的是当用户点击提交按钮时,输入框中的文字应该用作 urls.py 中的查询。我们将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您可以使用redirect来完成这项工作。

  1. 在表单中添加/search/个终结点的网址:

    url(r'^search/$', views.search_redirect),
    
  2. views

    def search_redirect(request):
        query = request.POST.get('query', '')
        return redirect('/search/{}/'.format(query))
    
  3. index.html中的表单应使用'POST'方法:

    <form action="/search/" method="POST">
      <input type="text" name="query" value="me"><br>
      <input type = "submit">
    </form>
    
  4. 当您提交查询字符​​串时,search_redirect函数会获取query字符串并将请求重定向到您的/search/<query>/函数。

    希望这会有所帮助。

答案 1 :(得分:1)

编辑:您当前的搜索网址也需要传递查询值。但在表单操作中只有/search/。在表单提交期间,查询值将在request.POST中传递,您将无法直接在URL中传递查询值,如/search/sample_query

您需要再添加一个网址

url(r'^search/$', views.search, name='search'),

观看次数

def search(request, query_via_url=false):
    # if form submission is true
    if request.post:
        query_via_form = request.post.get('query', '')
        ...

    # if query value is passed directly via url
    if query_via_url:
        ....