Django的PATH路徑轉換器

本書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轉換器就是一個類,主要包含下面的成員和屬性:
  1. 類屬性regex:一個字符串形式的正則表達式屬性。
  2. to_python(self, value)方法:一個用來將匹配到的字符串轉換為目標數據類型并傳遞給視圖函數的方法。注意,如果轉換失敗,則該方法必須彈出ValueError異常。
  3. 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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21556.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第一篇【傳奇開心果系列】AI工業應用經典算法和Python示例:基于AI的智能制造技術經典算法與Python實踐

傳奇開心果博文系列 系列博文目錄AI工業應用經典算法和Python示例系列 博文目錄前言一、AI在智能制造方面的應用場景介紹二、基于AI的智能制造技術經典算法介紹三、支持向量機機器學習算法Python示例代碼四、隨機森林機器學習算法Python示例代碼五、深度學習算法Python示例代碼…

linux指令-高階指令用法

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 linux操作系統的環境變量的使用基礎需要先了解 提示&#xff1a;以下是本篇文章正文…

【linux】(2)文件內容排序sort

sort 是一個用于排序文件內容的命令行工具&#xff0c;在 Linux 和 Unix 系統中非常常用。 基本用法 sort [OPTION]... [FILE]...常用選項 按數值排序 -n sort -n filename例子&#xff1a;對包含數值的文件進行排序。 按字典順序排序 -d sort -d filename例子&#xff1…

大宋咨詢(深圳酒店神秘顧客調查)酒店客房神秘人體驗調查內容

酒店客房神秘檢查內容&#xff0c;是酒店管理中至關重要的環節。通過專業的神秘顧客對客房進行細致入微的檢查&#xff0c;可以確保客房的清潔度、設施設備的完好性以及服務質量等方面達到高標準&#xff0c;幫助他們更好地了解客戶的需求和滿意度&#xff0c;從而提高服務質量…

Facebook開戶|Facebook公共主頁疑難雜癥詳解

??要要切克鬧&#xff0c;公共主頁我來道...哈嘍呀家人們中午好&#xff0c;上一次學習還是在上一次..hhh相信很多家人在做Facebook的時候總會遇到各種各樣匪夷所思的bug&#xff01;經常被搞心態吧&#xff01;那么咱們今天呢就來總結一下各類的bug以及解決方法&#xff0c;…

InvokeAI學習教程三:換臉

啟動InvokeAI&#xff0c;我們先生成一張圖&#xff1a; 在正向提示詞里輸入&#xff1a;Avant-garde couture, tactile textures, vogue aesthetics, vibrant color palette, intricate embroidery details, dramatic silhouettes 生成一張高貴夫人的圖像&#xff0c; 或者你從…

標準發布 | 廢水處理減污降碳協同評估指南(碳中和標準)

本文件主編單位&#xff1a;北京林業大學、北京交通大學、中國電建集團華東勘測設計研究院有限公司、 眉山市城投中恒能環保科技有限公司、 中華環保聯合會水環境治理專業委員會。 本文件參編單位&#xff1a;中國市政工程中南設計研究總院有限公司、湖北君集環境科技股份有 公…

C++ B (1124) : 斐波那契數列第n項Plus

文章目錄 一、題目描述二、參考代碼 一、題目描述 二、參考代碼 #include <iostream> #include <vector>using namespace std;const long long MOD 1e9 7; // 取模的值// 定義矩陣類 class Matrix { public:vector<vector<long long>> data;// 構造…

JavaWeb項目規范開發流程詳細分解

在JavaWeb項目開發中&#xff0c;遵循規范化的開發流程和最佳實踐可以提高代碼的可維護性、可擴展性和團隊協作效率。規范化的開發流程主要從下面幾個方面進行&#xff1a; 1. 項目結構 分層架構&#xff1a;典型的分層架構包括表示層&#xff08;Controller&#xff09;、業…

字節裁員!開啟裁員新模式。。

最近&#xff0c;互聯網圈不太平&#xff0c;裁員消息此起彼伏。而一向以“狼性文化”著稱的字節跳動&#xff0c;卻玩起了“低調裁員”&#xff0c;用一種近乎“溫柔”的方式&#xff0c;慢慢擠掉“冗余”的員工。 “細水長流”&#xff1a;裁員新模式&#xff1f; 不同于以往…

【TB作品】MSP430F5529,單片機,打地鼠游戲

功能 針對這塊開發板做了一個打地鼠游戲&#xff1a; 1 給單片機上電后&#xff0c;初始化顯示界面&#xff0c;顯示出分數和等級。 2 游戲是一輪一輪進行的&#xff0c;每一輪會以50%幾率點亮板子上的五個小燈&#xff0c;表示地鼠露頭需要打了。 3 一輪游戲開始后&#xff…

亞馬遜又爆單了!做跨境電商就是靠選品!

其實亞馬遜運營并不難&#xff0c;只要遵循亞馬遜規則去做就不會有問題&#xff0c;亞馬遜規則其實就是運營&#xff0c;但是&#xff01;難就難在選品&#xff01;我自己是做精品的&#xff0c;我自己明顯的感覺就是&#xff0c;運營技術很厲害&#xff0c;但是好的產品面前一…

貪心算法拓展(反悔貪心)

相信大家對貪心算法已經見怪不怪了&#xff0c;但是一旦我們的決策條件會隨著我們的步驟變化&#xff0c;我們該怎么辦呢&#xff1f;有沒有什么方法可以反悔呢&#xff1f; 今天就來講可以后悔的貪心算法&#xff0c;反悔貪心。 https://www.luogu.com.cn/problem/CF865Dhttp…

C++棧、隊列

文章目錄 目錄 文章目錄 前言 一、stack、queue介紹 1.stack 2.queue 二、stack、queue的習題 1. 最小棧 2. 棧的壓入、彈出序列 3.二叉樹的層序遍歷 三、stack和queue的模擬實現 1.stack的模擬實現 2.queue的模擬實現 前言 棧和隊列是倆種特殊的容器&#xff0c;C在實現棧和隊…

Go Go-Simple-Mail包進行批量SMTP郵件發送

go-simple-mail 包提供了一種簡便的方式來處理和發送郵件。這個包支持保持活動連接、TLS和SSL加密協議,非常適合批量SMTP郵件發送需求。 1、安裝Go-Simple-Mail包 go get -u github.com/xhit/go-simple-mail/v2 2、配置SMTP服務器連接 go-simple-mail包支持多種SMTP服務器…

強達電路營收下滑凈利潤急劇放緩:周轉率驟降,2次因環保被罰

《港灣商業觀察》施子夫 自2022年6月向深交所創業板遞交招股書起&#xff0c;深圳市強達電路股份有限公司&#xff08;以下簡稱&#xff0c;強達電路&#xff09;已收到深交所下發的兩輪審核問詢函&#xff0c;并且公司已于2023年3月31日順利過會。但由于遲遲未提交注冊申請&a…

無實驗數據指導蛋白質定向進化,上海交大洪亮課題組發表微環境感知圖神經網絡 ProtLGN

在現代生物技術和醫藥研究中&#xff0c;蛋白質工程扮演著至關重要的角色。通過修改蛋白質的氨基酸序列&#xff0c;蛋白質工程可以改善或賦予蛋白質新的生物化學性質&#xff0c;如增強酶的催化效率、提高藥物的親和力或改善其熱穩定性。這些改進對于開發新藥、治療疾病以及提…

lua vm 一: attempt to yield across a C-call boundary 的原因分析

使用 lua 的時候有時候會遇到這樣的報錯&#xff1a;“attempt to yield across a C-call boundary”。 1. 網絡上的解釋 可以在網上找到一些關于這個問題的解釋。 1.1 解釋一 這個 issue&#xff1a;一個關于 yield across a C-call boundary 的問題&#xff0c;云風的解釋是…

【最新鴻蒙應用開發】——實用廣告思路,可動態修改(方便運營)

鴻蒙項目加入廣告展示頁業務 廣告頁的思路——華為有廣告業務&#xff0c;但是我們不用- ad模塊&#xff1b; 想自定義廣告——場景&#xff1a; app啟動-有廣告需求&#xff0c;就打開廣告頁&#xff0c;沒有的話就去登錄或者主頁&#xff1b; 騰訊體育的廣告- 啟動有廣告頁…

適合小白學習的項目1894java開發ssm框架校園跑腿管理系統myeclipse開發mysql數據庫springMVC模式java編程計算機網頁設計

一、源碼特點 java ssm 校園跑腿管理系統是一套完善的web設計系統&#xff08;系統采用SSM框架進行設計開發&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采…