Django学习之路由配置和有名分组

1>引子

    URL配置本质也就是告诉Django,URL和调用函数之间的映射关系,对于客户端发来的请求,我应该

    用哪一段逻辑代码来进行响应。

    先看个例子,比如一个博客系统,我要看不同年份的博客记录,基于我们之前所学习的知识,我们只能这样写:

    Django学习之路由配置和有名分组

    恩,也不是很多,毕竟你一个网站可能也就是几十年,那要是查月的呢?就要再这些基础上再乘以12,按天呢?再乘以30,,,

    这个数据就非常庞大了,难道要在这里列出每一天对应的path和处理函数吗?

    这个时候,路由配置就显得非常的重要了,

    引入一个模块 re_path,其实看模块名也能想到一些,re,肯定是跟正则有关系,是否利用正则匹配来实现分组呢?

    答案还真是的,它的第一个参数就不是那种写死的path(比如‘timer/’)了,而是一个正则表达式(如^timer/),

    只要match这个表达式的path,都用一个处理函数处理,就行了,

    就比入上面的‘/blog/2001’,正则可以写成 r‘/blog/[0-9]{4}’,那么我管你是哪一年,只要是个blog后面接的是

    4位数字,我都是blog_y函数来处理。

    urls.py

    Django学习之路由配置和有名分组

    views.py

    Django学习之路由配置和有名分组

    效果

    Django学习之路由配置和有名分组

    Django学习之路由配置和有名分组

2>路由配置的从URL中取值

    若要从URL 中捕获一个值,只需要在它周围放置一对圆括号

    Django学习之路由配置和有名分组

    所以,在view视图编写函数的时候,也必须用参数去接收这个值,如下

    Django学习之路由配置和有名分组

    看下实际效果

    Django学习之路由配置和有名分组

    Django学习之路由配置和有名分组

    这就是路由取值,谨记,只要URL加了括号去取值,定义处理函数的时候就要加参数接收。

3>有名分组

    看名字不知道啥意思,如果把上面的取值传参称为 位置参数(就是year,month这些),那么,

    有名分组其实就是关键字参数,就是 指名道姓,我这个参数就是对应的URL的这个值的。

    那么,如何定义这个关键字的名称呢?

    很简单,在括号里面,表达式之前,加上 ?P<参数名>

    Django学习之路由配置和有名分组

    view视图定义函数正确写法如下,因为是关键字参数,所以参数的位置顺序就不影响了

    Django学习之路由配置和有名分组

    若非如此

    Django学习之路由配置和有名分组

    Django学习之路由配置和有名分组