1. 程式人生 > 其它 >django路由層知識

django路由層知識

今日內容概要

  • 作業講解(資料增刪改查)
  • django請求生命週期流程圖
  • django路由層
  • python虛擬環境(跳過)
  • 反向解析
  • 路由分發
  • 名稱空間

今日內容詳細

視覺化介面之資料增刪改查

針對資料物件主鍵欄位的獲取可以使用更加方便的 obj.pk獲取
在模型類中定義雙下str方法可以在資料物件被執行列印操作的時候方便的檢視

'''
form表單中能夠觸發調劑動作的按鈕只有兩個
	<input type='submit'/>
	<button></button>
'''


1.資料展示功能
	開設介面、獲取資料、傳遞頁面、展示資料
2.資料新增功能
	開設介面、獲取資料、傳送資料、校驗資料、錄入資料、重定向
3.資料編輯功能
	開設介面、後端如何區分所要編輯的資料(問號攜帶引數)、後端獲取使用者資料、前端展示預設資料、獲取使用者並完成更新
4.資料刪除功能
	開設介面、問號攜帶引數、刪除二次確認

django請求生命週期流程圖

這個圖很重要 無論是學習階段還是複習階段

學習流程
	路由層、檢視層、模板層、模型層、元件、BBS專案

django路由層

1.路由匹配
	django2.X及以上 path第一個引數寫什麼就匹配什麼
	django1.X第一個引數是正則表示式
	無論什麼版本django都自帶加斜槓字尾的功能 也可以取消
 	配置檔案中 APPEND_SLASH = False

2.轉換器
	正常情況下很多網站都會有很多相似的網址 如果我們每一個都單獨開設路由不合理
	django2.X及以上版本路由動態匹配有轉換器(五種)
   		  str:匹配除路徑分隔符外的任何非空字串。
        int:匹配0或者任意正整數。
        slug:匹配任意一個由字母或數字組成的字串。
        uuid:匹配格式化後的UUID。
        path:能夠匹配完整的URL路徑
     	 ps:還支援自定義轉換器(自己寫正則表示式匹配更加細化的內容)
 	 # 轉換器 將對應位置匹配到的資料轉換成固定的資料型別
    path('index/<str:info>/', views.index_func),  # index_func(實參request物件,info='轉換器匹配到的型別轉換之後的內容')
    path('index/<str:info>/<int:id>/', views.index_func)  # index_func(實參request物件,info='轉換器匹配到的型別轉換之後的內容',id='轉換器匹配到的型別轉換之後的內容')
3.正則匹配
	django2.X及以上版本有re_path 第一個引數是正則
 	匹配的本質是隻要第一個正則表示式能夠從使用者輸入的路由中匹配到資料就算匹配成功會立刻停止路由層其他的匹配直接執行對應的檢視函式
 	re_path('^test/$', views.test)
	django1.X路由匹配使用的是url() 功能與django2.X及以上的re_path()一致
    
4.正則匹配的無名有名分組
	無名分組
    	re_path('^test/(\d{4})/', views.test)
    	會將括號內正則匹配到的內容當做位置引數傳遞給檢視函式
 	有名分組
    	re_path('^test/(?P<year>\d{4})/', views.test)
    	會將括號內正則匹配到的內容當做關鍵字引數傳遞給檢視函式
 	注意上述的分組不能混合使用!!!

反向解析

通過一個名字可以反向解析出一個結果 該結果可以訪問到某個對應的路由

基本使用
	1.路由匹配關係起別名
    	path('login001/', views.login, name='login_view')
	2.反向解析語法
    	html頁面上模板語法	{% url 'login_view' %}
    	後端語法 		  reverse('login_view')
        
動態路由的反向解析
	path('func1/<str:others>/', views.func1_func, name='func1_view')
 	html頁面上模板語法 {% url 'func1_view' 'jason' %}
 	後端語法		  reverse('func1_view', args=('嘿嘿嘿',))

作業