Django: 路由与视图 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

使用默认参数

通常情况下,我们在定义路由项的正则模式时定义的分组参数,应当与视图函数 定义的参数一一对应,例如,对于下面的路由项,在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的路由项