Django 中的高级 URL

Advanced URLs in Django

任务是写两个url模式。

第一个将采用单个参数 <path>,可以是任意 url 具有随机深度:

test/dorogi/

test/foo/bar/as/deep/as/you/want

第二个与第一个相同,但最后有一个数字。

test/dorogi/1/

它有两个参数:<path><pk>。最后一个是数字。


我为第一个模式做了一个解决方案:

url(r'^(?P<path>.*)/', mptt_urls.view(model='activities.models.Category', view='activities.views.category',
                                         slug_field='slug'), name='activities'),

但是我如何制作第二个并防止它们之间发生任何冲突?

应该是这样的:

url(r'^...', views.ArticleDetailView.as_view(), name='article-detail'),

只需将第二个参数添加到第一个模式的正则表达式中:

r'^(?P<path>.*)/(?P<pk>\d+)/$'

但请务必将 放在 网址列表中的第一个网址之前。

(请注意,您一定要像我上面那样用 $ 终止您的模式。)