我的 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