1.django的url到底是什麼
就是路徑 ,看成django的目錄 ,每個目錄對應個檢視函式 ,當然乙個url僅能對應乙個函式
2.url的格式
url(正規表示式,views函式名,引數,別名)
這裡的正規表示式有個問題就是可能會匹配到多個路徑 ,匹配的方式是從上到下匹配即停 ,所以正則一定要嚴謹防止截胡
斜線' / '末尾加上會好很多,開頭不用加
#urls.py
載入應用的位址函式模組
urlpatterns =[
url(r
'^admin/$
', admin.site.urls),
url(r
'^admin/add/
', admin.site.urls),
url(r
'^admin/del/
', admin.site.urls),
url(正規表示式,views函式,引數,別名),
]
3.路由分發
#/專案目錄下/urls.py
4.分組與命名分組
分組是在做什麼? 我們傳參可以使用get中的url攜帶引數 ,我們還能用分組直接獲得引數傳給檢視函式 ,方便了不少呢
1).分組(肯定是正則的分組, 一組乙個引數 ,引數僅僅能傳遞str型別)
#urls.py中url(r'
^press/del/(\d+)/
', views.pressdel), #使用正則匹配乙個分組
#views.py中
#html中#點選時可以觸發url
2).命名分組 ,和分組的區別就是使用的是關鍵字引數 ,可以不考慮順序傳遞引數了
#urls.py中
url(r
'^press/del/?p(\d+)/
', views.pressdel), #
使用正則匹配乙個分組
#views.py中
def pressdel(request, del_id): #
接收url中的位置引數
models.presslist.objects.get(pk=del_id).delete()
return redirect('')
#html中
href="
">class="
fa fa-remove
" aria-hidden="
true
">
#點選時可以觸發url
3).命名分組之預設值分組 ,預設值分組的意義是什麼? 訪問不帶引數時的預設值 ,如下面的情況
#urls.py檔案
url(r'
^blog/page/$
', views.blog), #訪問首頁沒有引數的時候 ,檢視函式中num=9999
url(r
'^blog/page/(?p[0-9])
', views.blog), #訪問帶頁碼的引數時 ,檢視函式會使用分組中的num值
#views.py
def blog(request,num='
9999
'):
5.路由的別名
場景: 重新規劃了一下urls中的正則匹配位址 ,此時檢視函式與模板中寫死的跳轉就都變了 ,那麼改動實在太多了 ,使用路由別名! 每個url的正則無論如何變化 ,他的別名都不會變化
1).靜態別名 ,就是url中沒有攜帶引數(反向解析就是僅關注別名 ,別名後面如何不用管這就是反向解析)
檢視函式中使用reverse()函式解析 ,模板中使用解析
#urls.py檔案
url(r'
^halias/$
', views.halias, name='hs'
),url(r
'^ralias/$
', views.ralias, name='rs'
),#views.py檔案的redirect
defhalias(request):
return render(request, '
test.html')
defralias(request):
return redirect(reverse('rs'
))#html檔案
" > 重新整理操作 < / a >
2).動態別名 ,就是url中夾帶了引數 ,反向解析的時候有點不同 ,其中分為引數為位置引數或者是關鍵字引數
####位置引數解析#urls.py檔案
url(r'
^halias/([0-9])/(..)/$
', views.halias,name='hs'
),#在
views.py檔案redirect(reverse)
defhalias(request,c1,c2):
if c1 == '1'
:
return redirect(reverse('
hs',args=('
34','op'
)))
return render(request,'
test.html
',)
#在html檔案
"">重新整理操作
####關鍵字引數解析#urls.py檔案
url(r'^halias/([0-9])/(..)/$', views.halias,name='hs'),
#在views.py檔案redirect(reverse)
defhalias(request,c1,c2):
if c1 == '1':
return redirect(reverse('hs',kwargs=))
return render(request,'test.html',)
#在html檔案
重新整理操作
6.路由命名空間
#project/urls.py檔案
urlpatterns =[
url(r
'', include('
',namespace='
ap1'
)), url(r
'', include('
',namespace='
ap2'
)),]
#html檔案引入別名改動
"">命名空間測試重新整理當前頁
#views.py重定向使用別名時
....
return redirect(reverse('
ap1:cbs
',arg...
))...
7.url相關規範
1)路由要在跟路由處完成分發 ,避免路由表過大
Django(七) 路由系統
一般使用者通過瀏覽器向我們的伺服器發起乙個請求 request 這個請求回去訪問檢視函式,如果不涉及到資料呼叫,那麼這個時候檢視函式返回乙個模板也就是乙個網頁給使用者 檢視函式呼叫模型,模型去資料庫查詢資料,然後逐級返回,檢視函式把返回的資料填充到模板中空格中,最後返回網頁給使用者。路由系統就是路徑...
Django的路由系統01 路由分發
範例 from django.conf.urls import url from django.contrib import admin urlpatterns url r admin admin.site.urls url r publisher list views.publist.as vie...
3 路由配置
一 路由配置 path path 函式 匯入 from django.urls import path 語法 path route,views,name none 引數 1.route 字串型別,匹配的請求路徑 2.views 指定路徑所對應的檢視處理函式的名稱 3.name 為位址起別名,在模版中...