如何在Django中使用URLconf路由系統(tǒng)-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)如何在Django中使用URLconf路由系統(tǒng),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

白城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

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ù)說明:

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

regex是正則表達(dá)式的通用縮寫,它是一種匹配字符串或url地址的語法。Django拿著用戶請(qǐng)求的url地址,在urls.py文件中對(duì)urlpatterns列表中的每一項(xiàng)條目從頭開始進(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í)候,因此它的匹配搜索速度非??欤阃ǔ8杏X不到。

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ù)成本。

如何在Django中使用URLconf路由系統(tǒng) 

示例:

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

urlpatterns = [
  path('admin/', admin.site.urls),
  re_path(r'^$', views.index),      # 當(dāng)用戶訪問 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ù)字;()表示無名分組且可以傳參,函數(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ā)

如果一個(gè)項(xiàng)目下有很多的app,那么在urls.py里面就要寫巨多的urls映射關(guān)系。這樣看起來很不靈活,而且雜亂無章。

我們可以根據(jù)不同的app來分類不同的url請(qǐng)求。

首先,在urls.py里寫入urls映射條目。注意要導(dǎo)入include方法

url(r'^app1/',include("app01.urls")), # 路由分發(fā),所有app1開頭的,全部轉(zhuǎn)移到app01下的urls.py里去處理

要在app01下創(chuàng)建一個(gè)urls.py文件,用來處理請(qǐng)求的URL,使之與views建立映射

urlpatterns = [
  re_path(r'index/$', views.index), # 127.0.0.1:8080/app1/index
]

看完上述內(nèi)容,你們對(duì)如何在Django中使用URLconf路由系統(tǒng)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:如何在Django中使用URLconf路由系統(tǒng)-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article28/deepjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、網(wǎng)站排名、ChatGPT、全網(wǎng)營(yíng)銷推廣企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)