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")


 

posted on 2019-06-10 20:54  谢Rain  阅读(178)  评论(0编辑  收藏  举报