系列導(dǎo)讀 01. Django 系列篇(一):Hello World,! 1. 路由變量上面 Django 定義的路由只能代表一個頁面,為了使路由指向多個不同的頁面,,可以在路由中定義變量 變量類型有:整形,、字符串、slug,、uuid 4 種 其中: 1,、字符串:匹配任何非空字符串,但不包含斜杠,,默認(rèn)使用字符串類型 2,、整形:匹配任何非負數(shù) 3、slug:匹配 ASCII 字符以及連接線和下劃線,,可理解為注釋,、后綴或附屬等概念 4,、uuid:匹配一個 uuid 格式的對象,為了防止路由沖突,,所有字母必須小寫,,然后用 - 連接起來,比如:0755-2323-1111-abcd-3f3g 以匹配年,、月,、日的視圖為列 首先,在 App 的路由集合下新增一條路由信息 # urls.py(App) 其中,,使用變量符號 <> 為路由設(shè)置變量,,: 之前代表變量類型,: 之后代表變量名,;如果沒有指定變量類型,,默認(rèn)為字符串類型 然后,在 App 下的 view.py 文件中編寫路由定義的視圖函數(shù) 視圖函數(shù)中包含 4 個參數(shù),,其中第 1 個參數(shù)為:request,,其他 3 個參數(shù)為:路由信息包含的 3 個變量 需要注意的是,視圖函數(shù)的參數(shù)必須和路由信息包含的變量一一對應(yīng),,否則會拋出異常 # views.py(App) 最后運行項目,,在瀏覽器下輸入路由地址,比如:http://127.0.0.1:8000/2020/04/20 2. 額外變量除了在路由地址中設(shè)置變量外,,還可以為 path 函數(shù)追加一個變量 需要注意的是,,變量必須以字典的形式表示,參數(shù)值不限制數(shù)據(jù)格式,,可以是實體對象,,也可以是基本數(shù)據(jù)類型 # urls.py(App) 然后,,在視圖函數(shù) with_extra_params() 中來使用這個參數(shù) # views.py(App) 3. 正則表達式正則表達式可以限制路由地址中的變量取值范圍,,對路由變量進行截取與判斷,使得路由匹配更加地精確合理 路由正則表達式使用函數(shù) re_path 來定義,,以小括號 ( ) 為一個部分單位,,每個小括號以 ?P 開頭,加入正則表達式,,最后通過斜杠 / 隔開即可 上面的路由地址可以通過正則表達式改寫為: # 路由正則表達式 其中,,用 <> 包住的 year,、month、day 為 3 個變量 接著定義視圖函數(shù),,運行項目,,就可以通過地址訪問到視圖函數(shù)渲染的內(nèi)容,。 def ymd_with_params1(request,year, month, day): 4. 命名空間隨著網(wǎng)頁的數(shù)目增加,維護會有一定難度,,因此,,Django 可以為每一條路由設(shè)置命名空間,方便我們更好地管理網(wǎng)站 通過查看源碼,,發(fā)現(xiàn)路由函數(shù) include() 有兩個參數(shù),,分別是:arg、namespace,,其中 namespace 代表路由的命名空間,,為可選參數(shù);arg 參數(shù)類型為字符串或元組(長度為:2 ),,作用是指向項目某一個 App 的 urls.py 文件 需要注意的是: 1,、如果路由函數(shù)不存在命名空間,arg 的數(shù)據(jù)格式是字符串,,比如:first_app.urls,,指向 first_app 這個 App 的 urls.py 路由文件 2、如果路由函數(shù)命名空間存在,,arg 的數(shù)據(jù)格式一定要設(shè)置為長度為 2 的元組,,比如:('first_app.urls','first_app'),其中第一個參數(shù)為目標(biāo) App 的 urls.py 文件,,第二個參數(shù)一般設(shè)置為 App 的名稱 from django.contrib import admin 5. 路由名稱在 Django 中,路由名稱是對一個路由進行命名,,作用是在視圖,、模塊里使用路由命名生成路由地址,在后期路由地址發(fā)生變更的時候,,方便維護和更新 路由定義列表中,,可以為函數(shù) path() 和 re_path() 的 name 屬性指定一個值,相當(dāng)于給路由指定了名稱 urlpatterns = [ 不同 App 中的路由命令可以重復(fù)使用,,但是在同一個 App 內(nèi),,最好保證路由名稱的唯一性。 |
|