2013-10-01 28 views
0

我想在django(1.5)中做一些類別/子類路由。 我有5個級別的類別,可能看起來像。django重複組的urlpattern?

url(r'^(?P<category>\w*)/$', SearchResults.as_view(), name='search_results'), 
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/$', SearchResults.as_view(), name='search_results'), 
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/$', SearchResults.as_view(), name='search_results'), 
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/(?P<sublevel3>\w*)/$', SearchResults.as_view(), name='search_results'), 
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/(?P<sublevel3>\w*)/(?P<sublevel4>\w*)/$', SearchResults.as_view(), name='search_results'), 

但我想知道是否有更好的方法來做到這一點? 與重複模式或類似的正則表達式的東西。

謝謝。

+2

如果你仍想保留的命名組,我不這麼認爲。 – Jerry

+0

數字也沒問題 – maazza

+0

偶數不會保留。我相信用'/'分割會比較容易。 – Jerry

回答

1

使用正則表達式模式,組的數量在編譯時是「固定的」。您需要創建一個匹配模式的n次重複的組,然後在捕獲它之後再分割它。

你需要使用像^(?P<categories>(?:[\w]+\/?)+)$

那麼在你看來,

categories = filter(bool, categories.split('/'))