Django中的高级URL

时间:2016-07-04 14:05:45

标签: python django url django-urls django-mptt

任务是写两个网址模式。

第一个将采用单个参数<path>,可以是随机深度的任何网址:

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

1 个答案:

答案 0 :(得分:2)

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

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

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

(请注意,您应该使用$终止您的模式,如上所述。)