Django 简单 URL 映射问题
Django simple URL Mapping issue
有一个小问题,想知道是否有人可以帮助我。
我有一个像这样的文本搜索框
<form class="navbar-form navbar-left" role="search" action="/library/search/">
<div class="form-group" style="display:inline;">
<div class="input-group">
<input class="form-control" id="q" name="P" type="text" placeholder="Book Search"">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</span>
</div>
</div>
</form>
当我输入一个单词并点击提交时,会生成一个 URL,如下所示,
http://127.0.0.1:8000/library/search/?P=Harry+Potter
在 URLs.py 我有这样的东西
url(r'^search/(?P<search_result>[\w|\W.@+-]+)/$', views.search_view, name='search_view')
然而上面的 url 没有被正则表达式匹配。如果我从 url 中手动删除 ?P= 它工作正常。
我已经尝试了以下一些组合,但它们也没有用
url(r'^search/(?P(.*)<search_result>[\w|\W.@+-]+)/$', views.search_view, name='search_view')
知道它可能是什么吗?
谢谢
您误解了 ?P
在正则表达式中的含义。它指出该组是一个命名组,它被捕获并通过关键字参数发送到视图。满足正则表达式的 URL 是这样的:
/library/search/harrypotter/
但这根本不是您想要的搜索结果;您想要与您创建的类似的东西,即 library/search/?P=harry+potter
。为此,您只需要 URL 不带参数:
r'^search/$'
并获取视图中的数据:
query = request.GET['p']
尽管您可能想使用 q
而不是 p
。
有一个小问题,想知道是否有人可以帮助我。
我有一个像这样的文本搜索框
<form class="navbar-form navbar-left" role="search" action="/library/search/">
<div class="form-group" style="display:inline;">
<div class="input-group">
<input class="form-control" id="q" name="P" type="text" placeholder="Book Search"">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</span>
</div>
</div>
</form>
当我输入一个单词并点击提交时,会生成一个 URL,如下所示,
http://127.0.0.1:8000/library/search/?P=Harry+Potter
在 URLs.py 我有这样的东西
url(r'^search/(?P<search_result>[\w|\W.@+-]+)/$', views.search_view, name='search_view')
然而上面的 url 没有被正则表达式匹配。如果我从 url 中手动删除 ?P= 它工作正常。
我已经尝试了以下一些组合,但它们也没有用
url(r'^search/(?P(.*)<search_result>[\w|\W.@+-]+)/$', views.search_view, name='search_view')
知道它可能是什么吗?
谢谢
您误解了 ?P
在正则表达式中的含义。它指出该组是一个命名组,它被捕获并通过关键字参数发送到视图。满足正则表达式的 URL 是这样的:
/library/search/harrypotter/
但这根本不是您想要的搜索结果;您想要与您创建的类似的东西,即 library/search/?P=harry+potter
。为此,您只需要 URL 不带参数:
r'^search/$'
并获取视图中的数据:
query = request.GET['p']
尽管您可能想使用 q
而不是 p
。