是否可以在Django中的URL中使位置参数可选

时间:2011-07-02 18:18:21

标签: django url-rewriting django-views

我在URL文件中有这个

(r'^new/(?P<object_class>\w+)/(?P<action>\w+)/(?P<object_id>\d+)/$', create_object)

对于像/new/book/edit/5这样的网址,它正常工作

但是,如果我/new/book/create,那么它说的也不匹配URL。

是否有可能第三个argumrent是可选的,以便我可以对上述情况使用一个URL规则

2 个答案:

答案 0 :(得分:0)

(r'^new/(?P<object_class>\w+)/(?P<action>\w+)/((?P<object_id>\d+)/)?$', create_object)

这应该这样做。 (注意我将object_id/包裹在(..)?中以使其可选)

现在object_id 在视图中应为。

答案 1 :(得分:0)

你可以将其中一个参数标记为可选,正则表达式为0或1表示问号。使用我使用的示例:

(r'^new/(?P<object_class>\w+)/(?P<action>\w+)(/(?P<object_id>\d+))?/$', create_object)

需要注意的重要事项是尾随/应该仍然存在。