我的 django url 在这个基本搜索功能中有什么问题?
whats wrong with my django url in this basic search function?
我尝试在我的导航栏中实现一个搜索栏,该搜索栏将带有参数的 GET 请求发送到 /search
。当我在搜索栏中输入内容并按下回车键时,它只会将我带到 /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>
您的第一个 url 模式无法匹配,因为它缺少尾部斜杠。将其正则表达式更改为:
r'^search/$'
第二个 url 模式永远不会匹配任何内容,因为美元(匹配字符串结尾)在中间。你不应该在正则表达式中包含查询字符串,因此你应该只删除这个模式。
您有一个基于函数的视图,因此您应该使用 request.GET
来访问获取参数,而不是 self.request.GET
。
我尝试在我的导航栏中实现一个搜索栏,该搜索栏将带有参数的 GET 请求发送到 /search
。当我在搜索栏中输入内容并按下回车键时,它只会将我带到 /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>
您的第一个 url 模式无法匹配,因为它缺少尾部斜杠。将其正则表达式更改为:
r'^search/$'
第二个 url 模式永远不会匹配任何内容,因为美元(匹配字符串结尾)在中间。你不应该在正则表达式中包含查询字符串,因此你应该只删除这个模式。
您有一个基于函数的视图,因此您应该使用 request.GET
来访问获取参数,而不是 self.request.GET
。