Django: 路由与视图 互动版

提取URL参数

在定义路由项的正则模式时,可以使用分组(group)来提取URL模式中的参数值。 例如,根据下图中的路由表:

route-args

当用户访问/articles/2014/时,这个URL被用来与路由表中每一个路 由项的正则模式进行匹配测试。它恰好匹配路由表中的第一条路由规则: ^articles/([0-9]{4})/$

由于在这个路由项的正则模式中指定了分组,因此,请求URL中 的2014被提取出来,并作为参数传递给视图函数。由此, 对URL/articles/2014/请求的处理,在Django框架内,最终转化为执行 视图函数:

va_year(req,'2014')

类似的,当用户访问/articles/2014/02/时,将匹配具有两个分组的第二条 规则,最终转化为执行:va_month(req,'2014','02')

需要指出的是,提取的参数始终是字符串类型。

提取命名参数

当在路由项的正则模式中使用命名分组(named group)时,Django将以关键字参数的方式 向被调用的视图函数传入所提取的参数值。例如,对于路由表:

urlpatterns = [
    url(r'^articles/(?P&ltyear>[0-9]{4})/$', va_year),
]

当用户访问/articles/2014/时,Django将以如下的方式调用视图函数:

va_year(req,year='2014')
修改示例代码,将路由表中的第三项和第四项改为提取命名参数