Django路由层

Posted xzqpy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django路由层相关的知识,希望对你有一定的参考价值。

Urls的正则匹配

路由层作用是url与视图函数的映射

特点1.匹配成功后 不再往下匹配

  2.如果结尾没有/ 匹配失败后 加上/再走一次匹配列表,在settings.py中设置了 APPEND_SLASH=False 可以关闭

如何拿到完整url?

在视图函数中,request.path 可以拿到前缀路径

通过request.get_full_path() 可以拿到完整的路径

http://127.0.0.1:8000/test/hahah/?id=asda/

request.path》》》/test/hahah/

request.get_full_path()》》/test/hahah/?id=asda/

怎么取出url的一部分作为 参数传递给视图函数

有名分组和无名分组一定不能同时出现

 

有名分组

 

技术图片

无名分组

技术图片

视图函数可以使用默认关键字参数和默认位置参数 了解

 怎么给视图函数传递自定义的参数?:见博客

给匹配上的URL起别名降低耦合性 与 反向解析

url会经常改变,在视图函数中通过别名可以拿到真正的url,

from django.shortcuts import reverse 导入

在函数中?

技术图片

在模板中? 

% url "别名" %

% url "test_url" %

分组的url无法reverse ?-反向解析

无法解析  url(r"^test/(\\d+)",views.test,name="test_url"), 这种类型

在函数中可以通过

xxx拿到分组

技术图片

模板中

技术图片

解析得到

 

有名分组

 技术图片

 

 路由分发

路由分发后 还是可以取到别的app下的name,无法隔离

每个app下都有自己的static templates,urls,view

总的urls起分发路由的作用

看到app02开头url 交给 app02.urls下的url处理

开始匹配第二层

技术图片

 

 技术图片

 技术图片

怎么解决 无法隔离url别名 -名称空间

1.名称空间  

技术图片

 

 两个app中 url名称重复了,我反转URL的时候就可以通过命名空间的名称得到我当前的URL。

 如:reverse("app01:xxx")


 

以上是关于Django路由层的主要内容,如果未能解决你的问题,请参考以下文章

Django的路由层

Django视图层之路由配置系统(urls)

Django的路由层

Django的路由层(urlconf)

Django的路由层

关于Django中路由层(URL-conf)