路由匹配
1.url第一个参数是正则表达式,只要第一个参数能够匹配到内容,那么就会停止匹配,直接执行对应的视图函数
2.Django内部会做一个加/的重定向,如果匹配不到的话
3.APPEND_SALSH = False,可以取消自动加/的重定向
4.首页,url(r'^$',views.home)
5.尾页,url(r'')
无名分组
分组就是给某一段正则用小括号括起来,无名分组就是将括号内正则表达式匹配到的内容当做位置参数传递给后面的视图函数
url(r'test/(d+)',views.test)
有名分组
有名分组就是将括号内正则表达式匹配到的内容当作关键字参数传递给后面的视图函数
url(r'test/(?P<year>d+)',views.test)
反向解析
通过一些方法,得到一个结果,该结果可以直接访问对应的url,触发视图函数
第一步,给路由与视图函数对应关系起别名
url(r'^func_k' ,views.func, name='xxx')
第二步,后端反向解析
reverse模块,reverse('xxx')
第三步,前段反向解析
{% url 'xxx' %}
无名分组反向解析
url(r'home/(d+)',views.home)
后端:reverse('xxx',args=(1,))
前端:{% url 'xxx' 123 %}
有名分组反向解析
url(r'test/?P(<year>d+)',views.test)
后端:reverse('xxx',kwargs={'year':123})
前端:{% url 'xxx' 123 %},{% url 'xxx' year = 123 %}
路由分发
利用路由分发之后,总路由不在干路由与视图函数的直接对应关系,而是做一个分发处理,识别当前url是属于哪个应用下的,直接分发给对应的应用去处理
注意:总路由里面的url千万不要加$
url(r'app01/',include(app01.urls))