更简单的 URLconf
如果您错过了昨天“一周回顾”条目中的内容,我们对 URLconf 解析系统进行了改进,以便您可以使用非命名组作为命名组的替代方案来指定 URL。
例如,以下是旧的(但仍然支持的)语法
urlpatterns = patterns('', (r'^articles/2003/$', 'news.views.special_case_2003'), (r'^articles/(?P<year>\d{4})/$', 'news.views.year_archive'), (r'^articles/(?P<year>\d{4})/(?P<month>\d\d)/$', 'news.views.month_archive'), (r'^articles/(?P<year>\d{4})/(?P<month>\d\d)/(?P<day>\d\d)/$', 'news.views.article_detail'), )
以下是使用新的非命名组语法的等效代码
urlpatterns = patterns('', (r'^articles/2003/$', 'news.views.special_case_2003'), (r'^articles/(\d{4})/$', 'news.views.year_archive'), (r'^articles/(\d{4})/(\d\d)/$', 'news.views.month_archive'), (r'^articles/(\d{4})/(\d\d)/(\d\d)/$', 'news.views.article_detail'), )
要捕获某些内容,只需用括号将其括起来。当然,您仍然可以使用命名组。
如果您的 URLconf 使用非命名组(使用简单的括号,如第二个示例所示),则捕获的值将作为位置参数传递给您的视图——因此您需要确保视图函数的参数与它们在 URL 中出现的顺序相同。如果您的 URLconf 使用命名组(如第一个示例所示),则捕获的值将作为关键字参数传递——因此顺序无关紧要。
感谢 Aaron Swartz 最初提出此改进建议!
返回顶部