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

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

Django 路由系統(tǒng)URLconf的使用

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

URLconf是什么?

URL配置(URLconf)就像Django 所支撐網(wǎng)站的目錄。它的本質(zhì)是URL與要為該URL調(diào)用的view函數(shù)之間的映射表;你就是以這種方式告訴Django,對(duì)于這個(gè)URL調(diào)用這段代碼,對(duì)于那個(gè)URL調(diào)用那段代碼。

urlpatterns = [   url(正則表達(dá)式, views視圖函數(shù),參數(shù),別名),   re_path(正則表達(dá)式, views視圖函數(shù),參數(shù),別名), (在2.0以上版本中使用re_path),]

參數(shù)說(shuō)明:

正則表達(dá)式(regex):

regex是正則表達(dá)式的通用縮寫,它是一種匹配字符串或url地址的語(yǔ)法。Django拿著用戶請(qǐng)求的url地址,在urls.py文件中對(duì)urlpatterns列表中的每一項(xiàng)條目從頭開(kāi)始進(jìn)行逐一對(duì)比,一旦遇到匹配項(xiàng),立即執(zhí)行該條目映射的視圖函數(shù)或二級(jí)路由,其后的條目將不再繼續(xù)匹配。因此,url路由的編寫順序至關(guān)重要!需要注意的是,regex不會(huì)去匹配GET或POST參數(shù)或域名,例如對(duì)于https://www.example.com/myapp/,regex只嘗試匹配myapp/。對(duì)于https://www.example.com/myapp/?page=3,regex也只嘗試匹配myapp/。如果你想深入研究正則表達(dá)式,可以讀一些相關(guān)的書籍或?qū)U?,但是在Django的實(shí)踐中,你不需要多高深的正則表達(dá)式知識(shí)。

性能注釋:正則表達(dá)式會(huì)進(jìn)行預(yù)先編譯當(dāng)URLconf模塊加載的時(shí)候,因此它的匹配搜索速度非常快,你通常感覺(jué)不到。

view試圖函數(shù):

當(dāng)正則表達(dá)式匹配到某個(gè)條目時(shí),自動(dòng)將封裝的HttpRequest對(duì)象作為第一個(gè)參數(shù),正則表達(dá)式“捕獲”到的值作為第二個(gè)參數(shù),傳遞給該條目指定的視圖。如果是簡(jiǎn)單捕獲,那么捕獲值將作為一個(gè)位置參數(shù)進(jìn)行傳遞,如果是命名捕獲,那么將作為關(guān)鍵字參數(shù)進(jìn)行傳遞。

參數(shù)(kwargs):

任意數(shù)量的關(guān)鍵字參數(shù)可以作為一個(gè)字典傳遞給目標(biāo)視圖。

別名(name):

對(duì)你的URL進(jìn)行命名,可以讓你能夠在Django的任意處,尤其是模板內(nèi)顯式地引用它。相當(dāng)于給URL取了個(gè)全局變量名,避免了高額的維護(hù)成本。

 

示例:

例如服務(wù)器ip地址為127.0.0.1:8080

urlpatterns = [  path('admin/', admin.site.urls),  re_path(r'^$', views.index),      # 當(dāng)用戶訪問(wèn) http://127.0.0.1:8080 時(shí),后端用view.py中的index()函數(shù)處理。$表示結(jié)尾  re_path(r"^host/(/d+)",views.host),  # URL示例:127.0.0.1:8080/host/100 /d代表數(shù)字;()表示無(wú)名分組且可以傳參,函數(shù)內(nèi)參數(shù)和次順序一一對(duì)應(yīng);      # +表示重復(fù)一次或多次前面類型的字符。(/d+)表示不定位數(shù)的數(shù)字  re_path(r'^host_list/(/d{4})/(/d{2})$', views.host_list), # URL示例: 127.0.0.1:8080/host_list/2015/10  {4}表示重復(fù)四次前面的數(shù)字  url(r"^register",views.register,name="reg"),  # 127.0.0.1:8080/register reg是URL別名,在模板中,例如<a href="{% url 'reg' %}" rel="external nofollow" ></a>  re_path(r"^login",views.login,name="log"),  # 127.0.0.1:8080/login  re_path(r'^article/(?P<year>/d{4})/(?P<month>/d{2})/(?P<day>/d{2})',views.article_month), # 127.0.0.1:8080/article/2015/09/10 ?P表示有名分組,      # ()內(nèi)是分組,<>內(nèi)是組名函數(shù)內(nèi)參數(shù)名必須和組名相同,順序可以亂。]            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 理塘县| 通化县| 合作市| 伊宁市| 原阳县| 会泽县| 广河县| 静海县| 德昌县| 保靖县| 清徐县| 新乡市| 永宁县| 丰原市| 灵寿县| 克什克腾旗| 凤阳县| 申扎县| 鄂托克旗| 耿马| 嘉义县| 连州市| 曲靖市| 泰安市| 千阳县| 临安市| 金川县| 股票| 沂南县| 措勤县| 承德市| 申扎县| 焦作市| 鄂伦春自治旗| 金昌市| 中阳县| 盐山县| 鹰潭市| 永川市| 历史| 怀来县|