错误可以在这里看到:http://djaffry.selfip.com:8080/
我希望索引页面接受参数,无论是
mysite.com/search/param_here
或
mysite.com/?search=param_here
我的网址模式中有这个,但我无法让它工作。有什么建议吗?
urlpatterns = patterns('',
(r'^$/(?P<tag>\w+)', 'twingle.search.views.index'),
)
答案 0 :(得分:23)
首先,你在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
的所有内容(您应将其更改为满足您的需求)将与索引视图函数的请求一起传递为名为query
的参数。
<强>两个强>
您可以使用这两种网址模式:
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