首先你在 url 模式中的正则表达式是错误的。
r'^$/(?P<tag>\w+)'
它说匹配来自
的所有内容
- ^ 行首
- $ 到行尾
- 有模式命名标签,由行尾后的单词和数字组成
通常在一行结束后是另一行或 EOF 不内容(除非您使用多行正则表达式并且您不需要这些)。
行尾应该在标签之后:
r'^/(?P<tag>\w+)$'
使用查询字符串
Query strings are not parsed by url reslover.
因此,如果您的网址格式为:
http://mysite.com/?query=param_here
将匹配:
(r'^$', 'twingle.search.views.index')
在这种情况下,您可以像这样访问query 字符串:
request.GET.get('query', '')
没有查询字符串
mysite.com/search/param_here
将匹配:
(r'^search/(?P<query>\w+)$', 'twingle.search.views.index'),
与\w 匹配的所有内容(您应该更改它以适应您的需要)将作为名为@987654331@ 的参数与索引视图函数的请求一起传递。
两者
您可以像这样使用这两种 url 模式:
urlpatterns = patterns('twingle.search.views',
url(r'^$', 'index'),
url(r'^search/(?P<query>\w+)$', 'index'),
)
在本例中,视图如下所示:
def index(request, query=None)
if not query:
query = request.GET.get('query', '')
# do stuff with `query` string