使用默认参数
通常情况下,我们在定义路由项的正则模式时定义的分组参数,应当与视图函数 定义的参数一一对应,例如,对于下面的路由项,在URL模式中我们定义了两个 匿名分组:
url(r'^articles/([0-9]{4})/([0-9]{2})/$', v_year_month)
那么,在定义视图函数时,就必须支持这两个参数(除了必须的HttpRequest对象):
def v_year_month(req,year,month):pass
这要求用户在访问文章时,必须在URL中显式地指定年度和月份,比如: /articles/2013/12/。如果用户直接访问/articles/将导致404错误。
这并没有什么问题,但如果我们希望用户访问/articles/时,能导向一个默认 的年度和月份,可以为视图函数的参数指定默认值。例如:
def v_year_month(req,year='2015',month='11'):pass
那么现在就可以将URL/articles/也路由到视图函数v_year_month了:
urlpatterns = [
url(r'^articles/$', v_year_month),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', v_year_month),
]
修改示例代码,
1. 为视图v_year_archive定义默认参数
2. 在路由表中添加指向以默认参数调用视图v_year_archive的路由项