Django url regex用于查询字符串

alt*_*urt 2 regex django url query-string

以下来自urls.py:

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

我可以通过在shell中调用django.core.urlresolvers.reverse来验证它的工作原理:

In [6]: reverse('index', args=["course"])
Out[6]: '/?view=course'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问http:// localhost:8000 /?view = course时, 我得到404.

我在这做错了什么?

谢谢

编辑:

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

这是来自一个按预期工作的前项目.叹...

che*_*che 5

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

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