我在我的网站上添加了搜索功能,这样如果你转到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 中的查询。我们将不胜感激。谢谢!
答案 0 :(得分:2)
我认为您可以使用redirect
来完成这项工作。
在表单中添加/search/
个终结点的网址:
url(r'^search/$', views.search_redirect),
在views
:
def search_redirect(request):
query = request.POST.get('query', '')
return redirect('/search/{}/'.format(query))
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>/
函数。
希望这会有所帮助。
答案 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:
....