我想在Django网址调度程序中匹配以下格式的网址:
/(?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模式吗?对不起,如果这是重复,我已经做了一些搜索,但找不到这个问题。
更新:我计划检查location
和month
等在视图中是否有效,而不是在URL中为它们提供模式。
答案 0 :(得分:1)
我做了类似的事情,我解决了这个问题:
<强> url.py:强>
url(r'^(?P<location>[\w]+)/(?P<month>[\w]*)/?(?P<something>[\w]*)/?', ...),
<强> views.py:强>
def course_list(request, location, month = None, something = None):
if month:
# do stuff
您确实希望将“基本路径字”作为网址中的第一项。
如果你这样做:
url(r^(?P<location>[\w]*) ... ),
这将匹配所有网址