1. 程式人生 > >路由的使用

路由的使用

1 路由的基本使用:
 url是個函式,有四個引數,第一個引數要傳正則表示式,第二引數傳函式記憶體地址,第三個引數傳預設引數,第四個是路由的別名
url(r'^article/aa.html$', views.test),
-路由從上往下匹配,一旦匹配成功,後面就不繼續匹配了

2 路由的無名分組
url(r'^test2/(\d+)/(\w+)$', views.test2),
無名分組分出幾個值,檢視函式就要接受幾個值(位置引數形式傳過來的)

3 路由的有名分組
url(r'^test3/(?P<id>\d+)/(?P<name>\w+)$', views.test3),
有名分組分出幾個值,檢視函式就要接受幾個值(按關鍵字傳入,位置可以打亂)

        有名和無名不能混著用

4 在settings中配置(以後專案,一般不用動)
# 預設是true,瀏覽器瀏覽的時候,預設加上斜槓
# 如果是False,瀏覽器預設不會加/
# APPEND_SLASH=False

5 路由分發
1 匯入include
-from django.conf.urls import include
2 在主路由中:
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
3 在不同app中新建一個urls
from app01 import views
urlpatterns = [
url(r'^test/', views.test),
]
4 如果瀏覽器輸入app01/test/,就會響應到app01下views中的test取執行

6 反向解析:
幹什麼用?
-在檢視函式中重定向的地址原來是寫死的,如果url地址變更,我需要所有的url都修改,很麻煩,所有可以通過反向解析,獲得url的地址
如何使用:
-路由層:
url(r'^test_2/$', views.test2,name='test2'),
-檢視層:
from django.shortcuts import reverse
url=reverse('url地址的別名')
#如果做了分組
url=reverse('url地址的別名',args=[],kwargs={})
-模板層:
{% url 'url地址的別名'%}
#如果做了分組
{% url 'url地址的別名' 引數1 引數2%}

 

7 django 2.0的path,re_path
-1.幾的url就是2.幾的re_path
-2.0的path 第一個引數不再是正則表示式
-5個轉換器:int,str,slug,path,uuid