本書1-7章樣章及配套資源下載鏈接:
https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwd=nanc?
源碼、PPT課件、教學視頻等,可以從前言給出的下載信息下載,大家可以評估一下。
在Django框架中,默認內置了一組PATH路徑轉換器,具體介紹如下:
- str類型轉換器:匹配任何非空字符串,但是不包含特殊字符“/”;如果設計人員沒有指定專門的轉換器,默認就是使用該轉換器。
- int類型轉換器:匹配0和正整數,返回一個int類型。
- slug類型轉換器:可理解為注釋、后綴、附屬等概念,主要是URL鏈接中置于最后一部分的解釋性字符。該轉換器匹配任何ASCII字符以及連接符和下畫線,如【代碼4-2】中的字符串“django-url-pattern”。
- uuid類型轉換器:匹配一個UUID格式的對象。為了防止沖突,規定必須使用中畫線(-),并且所有字母必須小寫,例如,下面這個UUID字符串01234567-8900-aacc-a8a8-987654321000將返回一個uuid對象。
- path類型轉換器:匹配任何非空字符串,重點是可以包含路徑分隔符(/);這個轉換器適用于匹配整個URL鏈接,而不是一段一段的URL字符串。同時,要注意區分path轉換器和path()方法二者之間的區別。對于更復雜的匹配需求,設計人員可能就需要自定義path轉換器了。其實,path轉換器就是一個類,主要包含下面的成員和屬性:
- 類屬性regex:一個字符串形式的正則表達式屬性。
- to_python(self, value)方法:一個用來將匹配到的字符串轉換為目標數據類型并傳遞給視圖函數的方法。注意,如果轉換失敗,則該方法必須彈出ValueError異常。
- to_url(self, value)方法:一個將Python數據類型轉換為一段URL地址的方法,為to_python(self, value)方法的反向操作。注意,如果轉換失敗,則該方法也會彈出ValueError異常。
下面介紹一個關于PATH路徑轉換器的代碼實例。
首先,新建一個用于PATH路徑轉換的Python文件,定義一個用于轉換4位正整數年份數值的類FourDigitYearConverter,具體代碼如下:
【代碼4-3】(詳見本書配套下載資源中的源代碼中的urlconverter.py)
01 class FourDigitYearConverter:
02 regex = '[0-9]{4}'
03
04 def to_python(self, value):
05 return int(value)
06
07 def to_url(self, value):
08 return '%04d' % value
【代碼分析】
在第02行代碼定義了類屬性regex,格式為4位整數的正則表達式。
在第04、05行代碼定義了類方法to_python(),用于將4位整數(value)轉換為Python數據類型。
在第07、08行代碼定義了類方法to_url(),用于將Python數據類型轉換為URL地址,并進行了格式化操作(使用數字“0”從左填充的4位整數)。
然后,基于【代碼4-3】進行修改,在URLconf模塊中使用register_converter()方法進行注冊,具體代碼如下:
【代碼4-4】(urlconf.py)
01 from django.urls import path
02
03 from . import urlconverter, views
04
05 register_converter(urlconverter.FourDigitYearConverter, 'yyyy')
06
07 urlpatterns = [
08 path('articles/2023/', views.special_case_2023),
09 path('articles/<yyyy:year>/', views.year_archive),
10 path('articles/<yyyy:year>/<int:month>/', views.month_archive),
11 path('articles/<yyyy:year>/<int:month>/<slug:slug>/', views.article_detail),
12 ...
13 ]
【代碼分析】
在第05行代碼中,通過register_converter()方法注冊了一個“yyyy”類型。
第07~13行代碼定義了urlpatterns數組列表。其中,第09行、第10行和第11行中關于年份的類型使用了“yyyy”進行定義。
本文節選自《Django 5企業級Web應用開發實戰(視頻教學版)》,獲出版社和作者授權發布。
《Django 5企業級Web應用開發實戰(視頻教學版)》(王金柱)【摘要 書評 試讀】- 京東圖書 (jd.com)