我正在尝试在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'),
但我想知道是否有更好的方法呢? 带有重复模式或类似的正则表达式的东西。
感谢。
答案 0 :(得分:1)
使用正则表达式模式,组的数量“在编译时固定”。您需要创建一个匹配模式的n次重复的组,然后在捕获它之后将其拆分。
您需要使用^(?P<categories>(?:[\w]+\/?)+)$
然后在你看来,
categories = filter(bool, categories.split('/'))