0

我正在尝试在 django(1.5) 中进行一些类别/子类别路由。我有 5 个类别的级别,看起来像。

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'),

但我想知道是否有更好的方法来做到这一点?带有重复模式或类似模式的正则表达式。

谢谢。

4

1 回答 1

1

使用正则表达式模式,组的数量是“在编译时固定的”。您需要创建一个与您的模式的 n 次重复匹配的组,然后在捕获它后将其拆分。

你需要使用类似的东西^(?P<categories>(?:[\w]+\/?)+)$

那么在你看来,

categories = filter(bool, categories.split('/'))
于 2013-10-01T08:06:39.830 回答