技术文档2:Django中URL路由解析

URL定义:

urls.py ----- 负责把URL模式映射到应用程序。URL是Django收到用户请求后,根据用户请求的URL地址和urls.py里配置的映射关系,以正确的确定出某个URL调用哪一段逻辑代码来对应执行相应的视图函数或视图类,最后由视图返回给客户端想要接收的数据。

Django中的路由解析的过程主要是:

  1. 由客户端发送访问请求;
  2. 服务端接受客户端的请求,拆解出请求;
  3. 服务端优先匹配项目目录下的URL,再匹配具体应用中的URL;
  4. 做出判断,若匹配成功则执行对应的视图;未匹配成功则返回404;
  5. 客户端接受响应并渲染执行;

路由主要分为两种:

  1. 定义在工程同名目录下的urls.py的文件中,该文件是Django解析路由的入口,也叫总路由;
  2. 每个子应用为了保持相对的独立性,在每个子应用中定义属于自己的urls.py来保存该应用的路由,也叫做子路由;

也可将功能的全部路由信息都定义在主路由文件中,在子应用中不再设置urls.py文件中;

路由解析顺序:

路由的查找顺序是从上到下,因此有可能会使上面的路由屏蔽掉下面的路由,带来非预期结果。

因此在设置路由时要:

1.需要注意定义路由的顺序,避免出现屏蔽效应。

2.子路由定义时,将正则表达式写完整,加上结束符.

路径结尾斜线/的说明:

Django中定义路由时,通常以斜线/结尾,其好处是用户访问不以斜线/结尾的相同路径时,Django会把用户重定向到以斜线/结尾的路径上,而不会返回404不存在。

自定义的表达式匹配:转换器类型 类型说明

<int:number>

将number转换为整型,匹配0或任何正整数

<str:name>

将name转换为浮点型,匹配除了/之外的非空字符

<slug:path1>

匹配字母、数字、下划线组成的字符串

<uuid:path2>

匹配格式化的UUID唯一识别码

<path:path3>

匹配任何非空字符,包括路径分割符,?除外

其他注意事项:

urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续。

若要冲URL中捕获一个值,只需要在它周围放置一对圆括号(分配分组)

不需要添加一个前导的反斜杠(也就是写在正则最前面的那个/),因为每个url都有。例如:应该是^index而不是 ^/index。每个正则表达式前面的"r" 可选但是建议加上idex$   以什么结尾,以什么开头,严格限制路径

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙小小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值