【发布时间】:2014-04-05 01:07:18
【问题描述】:
我的搜索过滤器有一个 Django Url 模式,如下所示:
url(r'^search/(?P.+)$', views.search, name='search'),
这样,如果我调用 /search/1+Timothy,URL 会转到我的搜索视图,该视图会返回我的查询结果 - 在本例中,是 1 Timothy 中的所有条目。到目前为止,一切顺利。
在我的页面中,我想添加一个对该搜索功能的简单调用。所以,我想,为什么不是简单的形式呢?
<FORM method='GET' action='/search/'>
<!-- Note: Calls /search?filter_range=entered_reference is handled in urls.py-->
<LABEL for="filter_range">Show References</LABEL>
<INPUT id='filter_range' name='filter_range' type='text' placeholder='search' value='' />
<INPUT type='submit' />
</FORM>
应该等于简单的:
http://127.0.0.1:8000/search/?filter_range=1+timothy
问题是,我不知道如何在 urls.py 中指定:
url(r'^search/\\?passage=(?P<filter_range>.+)$', views.search, name='search'),
url(r'^search/(?P<filter_range>.+)$', views.search, name='search'),
不起作用,我似乎也想不出一个可以起作用的正则表达式。那么,如何让模板中的表单输出回调到 urls.py 可以找到的 url?
【问题讨论】:
-
是的,在有人问之前,我已经尝试过 search?filter_range 了.. :)
-
据我所知,您不能使用 GET 作为表单方法来使用命名参数/url 段。这些值将作为值附加到查询字符串:?foo=bar。您只需指向您的基本视图 URL 模式,然后从 request.GET.get('your-param') 中获取值
标签: regex django django-urls