我的django url在这个基本搜索功能中有什么问题?

时间:2018-01-09 18:56:13

标签: python django url-routing

我尝试在导航栏中实现一个搜索栏,该搜索栏向参与/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>

1 个答案:

答案 0 :(得分:3)

您的第一个网址格式无法匹配,因为它缺少尾随斜杠。将正则表达式更改为:

r'^search/$'

第二个url模式永远不会匹配任何东西,因为美元(匹配字符串的结尾)位于中间。你不应该在正则表达式中包含查询字符串,因此你应该删除这种模式。

您有一个基于功能的视图,因此您应该使用request.GET来访问获取参数,而不是self.request.GET