0

我想在我的 Django URL 调度程序中匹配以下形式的 URL:

 /(?P<location>\w+)-holidays/in-(?P<month>\w+)/to-(?P<top_price>\d+)

复杂的一点是,我希望路径的三个独立元素中的任何一个都是可选的。所以我想匹配以下所有内容:

 /venice-holidays
 /venice-holidays/in-june/
 /venice-holidays/in-june/to-1000
 /venice-holidays/to-1000
 /in-june
 /in-june/to-1000
 /to-1000

我可以用 Django URL 模式做到这一点吗?抱歉,如果这是重复的,我已经进行了一些搜索,但找不到确切的问题。

更新:我计划在视图中检查locationmonth是否有效,而不是在 URL 中为它们提供模式。

4

1 回答 1

1

我做过类似的事情,我这样解决了:

网址.py:

url(r'^(?P<location>[\w]+)/(?P<month>[\w]*)/?(?P<something>[\w]*)/?', ...),

视图.py:

def course_list(request, location, month = None, something = None):

    if month:
        # do stuff

您真的希望将“基本路径词”作为您的网址中的第一项。

如果你这样做:

url(r^(?P<location>[\w]*) ... ),

这将几乎匹配所有网址

于 2013-01-15T11:28:39.277 回答