Django网址有N个可选参数

时间:2012-08-15 09:24:12

标签: django django-urls

我想在其视频中使用与khanacademy.org相同的网址格式。假设我打开了一个标题为“The Beauty of Algebra”的视频,其网址为http://www.khanacademy.org/math/algebra/introduction-to-algebra/v/the-beauty-of-algebra

它在url中显示了三个级别的类别(数学,代数和代数介绍)。同样我想在django。类别级别(参数数量)可能会增加到N.

我不想硬编码像

这样的网址
url(r"^(?P<level_one>[a-zA-Z]+)/v/(?P<slug>[-\w]+)/$", "my_view", name="level_one"),
url(r"^(?P<level_one>[a-zA-Z]+)/(?P<level_two>[a-zA-Z]+)/v/(?P<slug>[-\w]+)/$", "my_view", name="level_two"),
url(r"^(?P<level_one>[a-zA-Z]+)/(?P<level_two>[a-zA-Z]+)/(?P<level_three>[a-zA-Z]+)/v/(?P<slug>[-\w]+)/$", "my_view", name="level_three"),
...

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为urls.py中可能存在可变数量的参数。最好的选择可能是拥有一个通用的catch-all url,它指向你编写自己的url调度程序的视图,这比django的url可以提供的更复杂。

您可以解析路径并处理视图中的N个级别。