国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Django 路由控制的實(shí)現(xiàn)代碼

2020-02-15 23:34:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、URL路由基礎(chǔ)

URL是web服務(wù)的路口,用戶通過瀏覽器發(fā)送過來(lái)的任何請(qǐng)求都會(huì)被發(fā)送到一個(gè)指定的URL地址里,然后被響應(yīng)。

在django項(xiàng)目中編寫路由就是向外暴露我們接收哪些URL的請(qǐng)求,除此之外任何的URL都不會(huì)被處理,URL路由就是web服務(wù)對(duì)外暴露的API

二、Django處理請(qǐng)求

確定要使用的 URLconf 模塊,通常是settings中 ROOT_URLCONF 設(shè)置的值,如果傳入的 HttpRequest 對(duì)象具有 urlconf 屬性(中間件設(shè)置),則使用其值代替settings中 ROOT_URLCONF

Django加載模塊并查找可用的 urlpatterns ,它是 django.conf.urls.url() 實(shí)例的一個(gè)列表

按順序運(yùn)行每個(gè)URL模式,匹配成功就停下來(lái),所以 順序很關(guān)鍵

匹配成功導(dǎo)入給定的視圖,它是一個(gè)python函數(shù),或基于類的視圖,視圖將獲得如下參數(shù)

一個(gè)HttpRequest實(shí)例 如果匹配的正則表達(dá)式返回了無(wú)名分組,那么它將作為位置參數(shù)提供給視圖 關(guān)鍵字參數(shù)由正則的有名分組組成,但是可以被django.conf.urls.url()的可選參數(shù)kwargs覆蓋

如果沒有URL模式匹配,或者過程出錯(cuò)了,將調(diào)用錯(cuò)誤處理視圖

三、簡(jiǎn)單的路由配置
from django.conf.urls import url

urlpatterns=[  url(正則表達(dá)式,view視圖函數(shù),參數(shù),別名)]

示例的URLconf:

from django.urls import urlfrom . import viewsurlpatterns = [  url(r'^articles/2003/$', views.special_case_2003),  url(r'^articles/([0-9]{4})/$', views.year_archive),  url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),  url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),]

注:

從URL中捕獲一個(gè)值,可以加園括號(hào)或者尖括號(hào) 不要添加前導(dǎo)的防斜杠,因?yàn)槊總€(gè)URL都有,例如,應(yīng)該是 ^articles 而不是 ^/articles 每個(gè)正則表達(dá)式前面的'r'是可選的,建議添加上,它告訴python這個(gè)字符串中的任何字符都不應(yīng)該被轉(zhuǎn)義

請(qǐng)求的例子及匹配的url

/articles/2005/03/將匹配列表中的第三個(gè)模式。Django將調(diào)用函數(shù)views.month_archive(request, '2005', '03')。
/articles/2005/3/不匹配任何URL模式,因?yàn)榱斜碇械牡谌齻€(gè)模式要求月份是兩個(gè)數(shù)字。
/articles/2003/將匹配列表中的第一個(gè)模式不是第二個(gè),因?yàn)槟J桨错樞驈纳贤缕ヅ洌谝粋€(gè)會(huì)首先被匹配。Django會(huì)調(diào)用函數(shù)views.special_case_2003(request)
/articles/2003不匹配任何一個(gè)模式,因?yàn)槊總€(gè)模式都要求URL以一個(gè)斜杠結(jié)尾。
/articles/2003/03/03/將匹配最后一個(gè)模式。Django將調(diào)用函數(shù)views.article_detail(request, '2003', '03', '03')。

是否開啟URL訪問地址后面 不為/跳轉(zhuǎn)至帶有/路徑的配置項(xiàng)

APPEND_SLASH=True

Django settings.py配置文件中默認(rèn)沒有 APPEND_SLASH 這個(gè)參數(shù),但 Django 默認(rèn)這個(gè)參數(shù)為 APPEND_SLASH = True。 其作用就是自動(dòng)在網(wǎng)址結(jié)尾加'/'。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长岭县| 册亨县| 威宁| 彭山县| 青海省| 涞水县| 黄陵县| 同心县| 阿拉善盟| 宝鸡市| 宁武县| 敦化市| 察隅县| 霍城县| 会宁县| 丰都县| 金塔县| 修水县| 辽阳县| 红原县| 凤台县| 临洮县| 繁昌县| 汕尾市| 游戏| 建平县| 抚州市| 隆安县| 凤翔县| 宜兰县| 常州市| 巩义市| 荣昌县| 崇仁县| 怀柔区| 万盛区| 大方县| 青海省| 封丘县| 安庆市| 靖西县|