欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django路由Path方法的實(shí)現(xiàn)

 更新時(shí)間:2023年07月12日 11:53:47   作者:以山河作禮。  
本文主要介紹了Django路由Path方法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

path()方法

path 函數(shù)來進(jìn)行路由的匹配,可通過以下方式進(jìn)行導(dǎo)入:

#新的2.x版本導(dǎo)入path,導(dǎo)入簡(jiǎn)化
from django.urls import path
#原來的1.x版本url方式,conf子包
from django.conf.urls import url

但是之前的 url 模塊并沒有廢止,只是 Django 強(qiáng)烈建議我們使用新模塊 path 進(jìn)行路由的匹配。

path方法函數(shù)定義

path 函數(shù)在 Django中的的定義如下所示:

path(route, view, kwargs, name)

它可以接收 4 個(gè)參數(shù),其中前兩個(gè)是必填參數(shù)后兩個(gè)為可選參數(shù)。參數(shù)解析如下:

  • route:是一個(gè)匹配 URL 的準(zhǔn)則(類似正則表達(dá)式)。當(dāng) Django 響應(yīng)一個(gè)請(qǐng)求時(shí),它會(huì)從 urlpatterns 的第一項(xiàng)開始,按順序依次匹配列表中的項(xiàng),直到找到匹配的項(xiàng),然后執(zhí)行該項(xiàng)映射的視圖函數(shù)或者 include 函數(shù)分發(fā)的下級(jí)路由,因此,url 路由的編寫在 Django中十分的重要!
  • view:指的是處理當(dāng)前 url 請(qǐng)求的視圖函數(shù)。當(dāng) Django 匹配到某個(gè)路由條目時(shí),自動(dòng)將封裝的 HttpRequest 對(duì)象作為第一個(gè)參數(shù),被“捕獲”的參數(shù)以關(guān)鍵字參數(shù)的形式,傳遞給該條目指定的視圖函數(shù)。
  • kwargs:指使用字典關(guān)鍵字傳參的形式給關(guān)聯(lián)的目標(biāo)視圖函數(shù)傳遞參數(shù)。
  • name:給 URL 起個(gè)別名,常用于 url 的反向解析,避免在模板中適應(yīng)硬編碼的方式使用嵌入 url,在后續(xù)章節(jié)會(huì)進(jìn)行詳細(xì)講解。

下面是一個(gè)使用path()方法的示例:

from django.urls import path
from . import views
urlpatterns = [
? ? path('articles/<int:year>/', views.article_year),
]

這個(gè)示例定義了一個(gè)路由,將請(qǐng)求的URL路徑中的年份參數(shù)傳遞給名為article_year的視圖函數(shù)。在視圖函數(shù)中,可以通過request對(duì)象的year屬性來獲取年份參數(shù)的值。

當(dāng)使用 path 方法關(guān)聯(lián)視圖函數(shù)時(shí)與 url 方法相比更為簡(jiǎn)化,也更容易讓初學(xué)者理解。

path 方法引入了類型轉(zhuǎn)化器(converter type)的概念,以此省去了較為復(fù)雜的正則表達(dá)式匹配路由的方法。

實(shí)例說明如下:

#1.x url方法
url(r'^test/(?P<year>[0-9])/$', views.year_test),
#2.x path方法
path('test/<int:year>/', views.year_test),

int 支持整數(shù)類型的轉(zhuǎn)化,在上述的例子中, year_test 函數(shù)接收到的 year 參數(shù)就變成整數(shù)而不是字符串,從而避免在視圖中使用year=int(year)。

path 函數(shù)定義的<int:year>規(guī)則會(huì)捕獲到 URL 中的值,映射給視圖中的同名參數(shù) year,并根據(jù)轉(zhuǎn)換器將參數(shù)值轉(zhuǎn)換為指定的類型,這里對(duì)應(yīng) int 大于等于 0 的整數(shù)。

之所以使用轉(zhuǎn)化器,有以下兩個(gè)原因:

  • 第一是可以將捕獲到的字符值轉(zhuǎn)換為對(duì)應(yīng)的類型;
  • 第二是對(duì) URL 中傳值的一種限制,避免視圖處理出錯(cuò);

path方法類型轉(zhuǎn)化器

Django 默認(rèn)支持 5 個(gè)類型轉(zhuǎn)換器,在大多數(shù)情況下,絕對(duì)可以滿足我們的正常業(yè)務(wù)需求,如果不能,Django 同樣提供了自定義轉(zhuǎn)換器。

下面介紹 Django 默認(rèn)支持的轉(zhuǎn)換器,如下所示:

  • str,匹配除了路徑分隔符(/)之外的非空字符串,這是默認(rèn)的形式;
  • int,匹配正整數(shù),包含0;
  • slug,匹配字母、數(shù)字以及橫杠、下劃線組成的字符串;
  • uuid,匹配格式化的 uuid,如 075194d3-6885-417e-a8a8-6c931e272f00;
  • path,匹配任何非空字符串,包含了路徑分隔符。

re_path正則表達(dá)式匹配

Django 2.x 之后也支持我們使用正則表達(dá)式來捕獲值,在這里需要使用 re_path()。我們使用帶命名的正則表達(dá)式分組,語法如下:

(?P<name>pattern) 

其中,尖括號(hào)里的name為分組名,pattern為正則表達(dá)式。re_path()同樣包含于django.urls模塊中,所以同樣使用如下方式進(jìn)行導(dǎo)入。示例如下:

from django.urls import path, re_path  #導(dǎo)入re_path
from . import views
urlpatterns = [
    re_path('test/(?P<year>[0-9]{4})/', views.year_test),
    re_path('test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_test)]

到此這篇關(guān)于Django路由Path方法的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django路由Path內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論