2011-05-15 60 views
2

以下是從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

回答

5

查詢字符串不是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

-1

您的正則表達式匹配從開始(^),但我沒有看到任何匹配前導'/'的東西。這可能嗎?

+0

不幸的是,not.django的url調度程序解決了根/之後的部分。但我試過,如果這可能是它,但沒有運氣:) – hinoglu 2011-05-15 20:58:41