假设这是一个url
,它接受一个参数(此处为book_id
)并将值传递给views
:
url(r'^/(?P<book_id>\w+)/$', 'pro.views.book', name='book'),
是否可以使用带参数的url,但是,如果没有给出参数,则采用默认值。如果可能,也可能在views
。如果这是一个蹩脚的问题,我很抱歉,但我真的需要知道。任何帮助或建议将不胜感激。谢谢
答案 0 :(得分:12)
使捕获模式可选,并记住适当地处理尾部斜杠。我会在捕获组周围找到一个非捕获组,这是最安全的方法:
url(r'^(?:(?P<book_id>\w+)/)?$', 'pro.views.book', name='book'),
然后在视图中声明参数的默认值:
def book(request, book_id='default'):
如果您发现该网址格式很难看,您可以将两个正则表达式绑定到同一个视图函数:
url(r'^(?P<book_id>\w+)/$', 'pro.views.book', name='book'),
url(r'^$', 'pro.views.book', name='default_book'),
根据阿拉斯戴尔的提醒,我删除了领先的斜线。我觉得这看起来很奇怪。