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