Django學(xué)習(xí)(5)-URL name進(jìn)階

1學(xué)完前面的知識(shí),遺留了一個(gè)問題:


這里面的name='add2'是干什么用的呢?

簡(jiǎn)單說,name 可以用于在 templates, models, views ……中得到對(duì)應(yīng)的網(wǎng)址,相當(dāng)于“給網(wǎng)址取了個(gè)名字”,只要這個(gè)名字不變,網(wǎng)址變了也能通過名字獲取到。

2繼續(xù)學(xué)習(xí),修改calc/views.py

為了弄清楚這個(gè)問題,修改視圖文件,如下:
創(chuàng)建首頁(yè)home.html,通過render引入進(jìn)來


修改urls.py文件,添加如下規(guī)則:

url(r'^$',calc_views.home,name='home'),

當(dāng)我們點(diǎn)擊home中的超鏈接的時(shí)候 會(huì)訪問超鏈接,路勁如下:

http://127.0.0.1:8000/add/4/5/

如果這樣寫“死網(wǎng)址”,會(huì)使得在改了網(wǎng)址(正則)后,模板(template),視圖(views.py,用以用于跳轉(zhuǎn)),模型(models.py,可以用用于獲取對(duì)象對(duì)應(yīng)的地址)用了此網(wǎng)址的,都得進(jìn)行相應(yīng)的更改,修改的代價(jià)很大,一不小心,有的地方?jīng)]改過來,就不能用了。

so,下面我們要完成動(dòng)態(tài)的去修改這些個(gè)參數(shù)們

3 實(shí)現(xiàn)動(dòng)態(tài)修改參數(shù)們

>>> from django.core.urlresolvers import reverse
>>> reverse('add2', args=(4,5))
u'/add/4/5/'
>>> reverse('add2', args=(444,555))
u'/add/444/555/'

reverse 接收 url 中的 name 作為第一個(gè)參數(shù),我們?cè)诖a中就可以通過 reverse() 來獲取對(duì)應(yīng)的網(wǎng)址(這個(gè)網(wǎng)址可以用來跳轉(zhuǎn),也可以用來計(jì)算相關(guān)頁(yè)面的地址),只要對(duì)應(yīng)的 url 的name不改,就不用改代碼中的網(wǎng)址。

在模板中修改,如下

不帶參數(shù)的:
{% url 'name' %}
帶參數(shù)的:參數(shù)可以是變量名
{% url 'name' 參數(shù) %}

例如:
<a href="{% url 'add2' 4 5 %}">link</a>

4 老接口自動(dòng)實(shí)現(xiàn)跳轉(zhuǎn)新接口

views.py中新寫一個(gè)函數(shù)


修改 urls.py中的路徑匹配


當(dāng)我們?cè)谠L問 /add的時(shí)候 就會(huì)自動(dòng)跳轉(zhuǎn)打/new_add的路徑 了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容