本篇文章為大家展示了使用Django怎么傳遞URL參數(shù),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的和平網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!1. Django處理請(qǐng)求的方式
1) Django通過(guò)URLconf模塊來(lái)進(jìn)行判斷。通常情況下,這就是ROOT_URLCONF配置的價(jià)值,但是如果請(qǐng)求攜帶了一個(gè)urlconf的屬性(通常被中間件設(shè)置),那么這個(gè)被攜帶的urlconf將會(huì)替代ROOT_URLCONF的配置。
2) Django會(huì)調(diào)用Python模塊并尋找各種urlpatterns。這是一個(gè)屬于django.conf.urls.url()實(shí)例的python列表。
3) Django會(huì)遍歷每個(gè)URL pattern,自上而下,并且選取收割匹配請(qǐng)求URL的pattern。
4) 一旦匹配某個(gè)url pattern的正則表達(dá)式,Django將導(dǎo)入并調(diào)用相關(guān)的view(這是一個(gè)簡(jiǎn)單的python函數(shù),或者是一個(gè)class-based view)
這個(gè)view將會(huì)傳遞下列參數(shù):
一個(gè)HttpRequest的實(shí)例
如果匹配了URL中一個(gè)no named group,那么參數(shù)將會(huì)按根據(jù)URL中的位置一一對(duì)應(yīng)
如果匹配了URL中一個(gè)named group,且參數(shù)傳遞是通過(guò)named group來(lái)匹配的,那么參數(shù)將會(huì)被指定的kwargs代替。
5) 如果沒有任何一個(gè)正則表達(dá)式被匹配,那么Django會(huì)拋出異常,并報(bào)錯(cuò)。
2.URL中的named group
URL可以通過(guò)named group方式傳遞指定參數(shù),語(yǔ)法為: (?P
url(r'^articles/(?P[0-9]{4})/(?P [0-9]{2})/$', views.month_archive),
那么year,month將會(huì)對(duì)應(yīng)views傳遞過(guò)來(lái)的year,month的值,而后面緊跟的則代表正則表達(dá)匹配的模式。
3. URL的反向解析
通常來(lái)說(shuō)在處理完一個(gè)表單之后,網(wǎng)頁(yè)會(huì)發(fā)生跳轉(zhuǎn)。通常寫URL我們都避免硬編碼,這樣不方便后期的調(diào)整。通常我們需要從URL獲取兩種內(nèi)容,最主要是view能夠通過(guò)URL獲取一些標(biāo)識(shí)并處理,另一些信息則是傳遞過(guò)來(lái)的參數(shù)。
Django提供了一種解決方案,URL mapper是與URL設(shè)計(jì)一一對(duì)應(yīng)。你可以通過(guò)URLconf來(lái)實(shí)現(xiàn),并反向使用它。例如,
由用戶通過(guò)瀏覽器發(fā)起URL請(qǐng)求,調(diào)用view,并將URL中的參數(shù)傳遞給view
通過(guò)view并附上相應(yīng)參數(shù),找到相應(yīng)匹配的URL。
后者我們稱之為對(duì)URLs的反向解析。反向解析的例子,
url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'),
Django在不同的層次也提供了一些工具來(lái)實(shí)現(xiàn)URL的反向解析。
在template中:使用url標(biāo)簽
在python中:使用django.core.urlresolvers.reverse()函數(shù)
在更高層次處理model實(shí)例時(shí),可以使用get_absolute_url()方法
4. 利用URL來(lái)完成Device,Line表的增加功能
對(duì)于信息系統(tǒng),我們可以把Node,Device, Line都看成是一種資源,對(duì)其中任何一種要素的修改,都是對(duì)資源的修改,只是會(huì)落實(shí)到不同的表中,但是在程序中可以一樣看到?,F(xiàn)在,我們就基于上一節(jié)的代碼做些修改。
1)修改URL的配置,將原來(lái)的add對(duì)應(yīng)的url進(jìn)行擴(kuò)充
urls.py:
from django.conf.urls import url from django.contrib import admin import echo.views urlpatterns = [ url(r'^admin/', admin.site.urls), #內(nèi)容顯示,并通過(guò)定義name,來(lái)進(jìn)行反向解析 url(r'^lists/(?P
設(shè)備名稱 | 設(shè)備型號(hào) |
---|---|
{{ item.device_caption }} | {{ item.device_type }} |
line_list.html:
線路名稱 | 線路速率 | 線路類型 |
---|---|---|
{{ item.line_code }} | {{ item.line_speed }} | {{ item.line_type }} |
node_list.html:
節(jié)點(diǎn)名稱 | 節(jié)點(diǎn)地址 | 節(jié)點(diǎn)類型 |
---|---|---|
{{ item.node_name }} | {{ item.node_address }} | {{ item.node_type }} |
上述內(nèi)容就是使用Django怎么傳遞URL參數(shù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。