Django学习之路由配置和有名分组
1>引子
URL配置本质也就是告诉Django,URL和调用函数之间的映射关系,对于客户端发来的请求,我应该
用哪一段逻辑代码来进行响应。
先看个例子,比如一个博客系统,我要看不同年份的博客记录,基于我们之前所学习的知识,我们只能这样写:
恩,也不是很多,毕竟你一个网站可能也就是几十年,那要是查月的呢?就要再这些基础上再乘以12,按天呢?再乘以30,,,
这个数据就非常庞大了,难道要在这里列出每一天对应的path和处理函数吗?
这个时候,路由配置就显得非常的重要了,
引入一个模块 re_path,其实看模块名也能想到一些,re,肯定是跟正则有关系,是否利用正则匹配来实现分组呢?
答案还真是的,它的第一个参数就不是那种写死的path(比如‘timer/’)了,而是一个正则表达式(如^timer/),
只要match这个表达式的path,都用一个处理函数处理,就行了,
就比入上面的‘/blog/2001’,正则可以写成 r‘/blog/[0-9]{4}’,那么我管你是哪一年,只要是个blog后面接的是
4位数字,我都是blog_y函数来处理。
urls.py
views.py
效果
2>路由配置的从URL中取值
若要从URL 中捕获一个值,只需要在它周围放置一对圆括号
所以,在view视图编写函数的时候,也必须用参数去接收这个值,如下
看下实际效果
这就是路由取值,谨记,只要URL加了括号去取值,定义处理函数的时候就要加参数接收。
3>有名分组
看名字不知道啥意思,如果把上面的取值传参称为 位置参数(就是year,month这些),那么,
有名分组其实就是关键字参数,就是 指名道姓,我这个参数就是对应的URL的这个值的。
那么,如何定义这个关键字的名称呢?
很简单,在括号里面,表达式之前,加上 ?P<参数名>
view视图定义函数正确写法如下,因为是关键字参数,所以参数的位置顺序就不影响了
若非如此