2017-04-15 220 views
0

我向我的网站添加了搜索功能,例如,如果您转到www.mywebsite.com/search/texthere,它会显示title = texthere的所有歌曲。我想将这个功能添加到我的索引页面。Django搜索功能

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

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任何帮助,将不胜感激。谢谢!

回答

1

编辑:您当前的搜索网址需要查询值也被传递。但在表格行动中只有/search/在那里。在表单提交查询值将在request.POST传递,你将无法直接在网址通过查询值这样/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: 
     .... 
+0

我不明白这个,你能解释一下吗?谢谢。 – blacklight

+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> 
    

当您提交的查询字符串,search_redirect功能得到query字符串,并将请求重定向到您/search/<query>/功能。

希望这会有所帮助。