Django學(xué)習(xí)筆記:URL反向解析
URL的書(shū)寫(xiě)規(guī)范
url常見(jiàn)于出現(xiàn)在以下幾個(gè)地方:1.超鏈接的href 2.from的action 3.視圖函數(shù)的HttpResponseRedirect(‘url’)

在相對(duì)地址的情況下,有兩種解析方式:
第一種是以‘/’開(kāi)的地址,比如說(shuō)‘/page/1’,遇見(jiàn)這些url,瀏覽器就會(huì)在原來(lái)的協(xié)議+主機(jī)(或者域名)+端口后直接加入‘/url’,若當(dāng)前地址是http://193.136.123.235:9999/toptic1/topic2/12,將會(huì)解析成http://193.136.123.235:9999/page/1
第二種是不以‘/’開(kāi)頭的地址,比如說(shuō)是‘page/’,遇見(jiàn)這種url,瀏覽器會(huì)根據(jù)當(dāng)前的url的最后一個(gè)‘/’之前的內(nèi)容,直接加上url,若當(dāng)前地址是http://193.136.123.235:9999/toptic1/topic2/12,將會(huì)解析成http://193.136.123.235:9999/toptic1/topic2/page/1
瀏覽器對(duì)地址的解析方式很重要,如果分析不好的話,頁(yè)面跳轉(zhuǎn)將混亂不堪甚至404

在絕對(duì)地址的情況下,以上的情況都會(huì)直接訪問(wèn)直接地址url
項(xiàng)目地址的容錯(cuò)性和可擴(kuò)展性強(qiáng)一些,建議寫(xiě)相對(duì)地址,且建議寫(xiě)相對(duì)地址的第一種寫(xiě)法(以‘/’開(kāi)頭的url),最不容易出錯(cuò)誤

URL的反向解析
?一個(gè)項(xiàng)目的發(fā)展會(huì)出現(xiàn)多層次的服務(wù),對(duì)應(yīng)的url可能會(huì)更加復(fù)雜和冗長(zhǎng),為了解決這個(gè)問(wèn)題,我們可以給url起別名,模板會(huì)反向解析別名來(lái)獲取真實(shí)的url。
由于反向解析是動(dòng)態(tài)的,無(wú)論url如何更改都可以通過(guò)name來(lái)反向解析出url出來(lái)。
要實(shí)現(xiàn)反向解析,第一步便是構(gòu)造從name到url的映射
這里我們使用path來(lái)做綁定
path(url,views.xxx, name)

在模板中,可以通過(guò) {% url 'name'%]來(lái)動(dòng)態(tài)獲取出url,若是要求實(shí)習(xí)‘url?a=1&b=2’的路徑參數(shù)傳遞,則需要{% url 'name'? a='1' b='2'}來(lái)實(shí)現(xiàn)獲取帶參數(shù)的url


在視圖函數(shù)中,也可以調(diào)用django的reverse的方法來(lái)反向解析獲取url,特別是在302重定向的時(shí)候可以用到這一技術(shù)。


以上就是url的解析了,包括了瀏覽器的兩種解析和模板以及視圖函數(shù)的反向解析。