我尝试在导航栏中实现一个搜索栏,该搜索栏向参与/search
发送带有参数的GET请求。当我在搜索栏中输入内容并点击输入时,只需转到/search/
就会出现404错误。
如果我手动输入/search/?searchstring=32423
,我也会找到一个找不到的页面。
views.py
def basic_search(request):
query = request.GET.get('searchstring')
if query:
context={"query": query}
return render(request, 'root_index.html', context)
else:
return redirect('/')
urls.py
url(r'^search/$', views.basic_search,)
在我的base.html中
<form class="navbar-form navbar-right" role="search" name="searchstring" action="/search/" method="get">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" id="Search">
</div>
<button type="submit" class="btn btn-default">
<span class="glyphicon glyphicon-search"></span>
</button>
</form>
答案 0 :(得分:3)
您的第一个网址格式无法匹配,因为它缺少尾随斜杠。将正则表达式更改为:
r'^search/$'
第二个url模式永远不会匹配任何东西,因为美元(匹配字符串的结尾)位于中间。你不应该在正则表达式中包含查询字符串,因此你应该删除这种模式。
您有一个基于功能的视图,因此您应该使用request.GET
来访问获取参数,而不是self.request.GET
。