Django的网址正则表达式查询字符串

问题描述:

以下是从urls.py:Django的网址正则表达式查询字符串

url(r'^\?view=(?P<vtype>instructor|course|room)$', 'index', name='index'), 

我可以验证它的工作原理是简单地在外壳调用django.core.urlresolvers.reverse:

In [6]: reverse('index', args=["course"]) 
Out[6]: '/?view=course' 

但当我尝试访问http://localhost:8000/?view=course 我得到了404个。

我在做什么错在这里?

感谢

编辑:

url('^search/\?user=(?P<userid>\d+)&type=topic', 'search_forum', name='my_topics'), 

这是因为预计该工程前项目。叹...

+0

你有什么应该为该URL回答吗? – 2011-05-15 20:49:47

+0

是的,index()通常没有正则表达式。但添加查询字符串正则表达式打破了URL调度。正如你所提到的, – hinoglu 2011-05-15 20:52:21

查询字符串不是URL的一部分。如果你想这样做,你必须使用url(r'^$', 'index', name='index')然后在request.GET字典中查看它。

然而,通常的方法是使用url(r'(?P<vtype>instructor|course|room)/$', 'index', name='index')。 querystring方法是通常的解决方法,不能根据非查询字符串URL部分来引导请求。 Django没有这个限制。

+0

最终有两个url正则表达式。谢谢 – hinoglu 2011-05-15 21:15:21

您的正则表达式匹配从开始(^),但我没有看到任何匹配前导'/'的东西。这可能吗?

+0

不幸的是,not.django的url调度程序解决了根/之后的部分。但我试过,如果这可能是它,但没有运气:) – hinoglu 2011-05-15 20:58:41