最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django實現(xiàn)自定義路由轉換器

 更新時間:2021年05月14日 09:41:40   作者:Silent丿丶黑羽  
有時候上面的內置的url轉換器并不能滿足我們的需求,因此django給我們提供了一個接口可以讓我們自己定義自己的url轉換器,那么如何實現(xiàn),本文就來介紹一下

自定義路徑轉換器

有時候上面的內置的url轉換器并不能滿足我們的需求,因此django給我們提供了一個接口可以讓我們自己定義自己的url轉換器

django內置的路徑轉換器源碼解析

在我們自定義路由轉換器之前,我們先查看一下django內置的那些路由轉換器怎么寫的,源碼路徑from django.urls

import converters

class IntConverter:
    regex = '[0-9]+'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return str(value)


class StringConverter:
    regex = '[^/]+'

    def to_python(self, value):
        return value

    def to_url(self, value):
        return value


class UUIDConverter:
    regex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'

    def to_python(self, value):
        return uuid.UUID(value)

    def to_url(self, value):
        return str(value)


class SlugConverter(StringConverter):
    regex = '[-a-zA-Z0-9_]+'


class PathConverter(StringConverter):
    regex = '.+'


DEFAULT_CONVERTERS = {
    'int': IntConverter(),
    'path': PathConverter(),
    'slug': SlugConverter(),
    'str': StringConverter(),
    'uuid': UUIDConverter(),
}


REGISTERED_CONVERTERS = {}


def register_converter(converter, type_name):
    REGISTERED_CONVERTERS[type_name] = converter()
    get_converters.cache_clear()

從上面我們可以非常分析的看到,django內置的路徑轉換器是先定義了一個類,類中定義了一個類屬性regex作為正則表達式的值,然后定義了2個方法to_python和to_url,最后定義了一個register_converter函數(shù),將路徑轉換器注冊到django中去

我們這里給他劃分為5步:

1.創(chuàng)建一個converters.py,在文件中定義一個類。
2.在類中定義一個屬性regex,這個屬性是用來保存url轉換器規(guī)則的正則表達式。
3.實現(xiàn)to_python(self,value)方法,這個方法是將url中的值轉換一下,然后傳給視圖函數(shù)的。
4.實現(xiàn)to_url(self,value)方法,這個方法是在做url反轉的時候,將傳進來的參數(shù)轉換后拼接成一個正確的url。
5.將定義好的轉換器,注冊到django中。

小案例

接下來我們自己定義一個轉換器,滿足4位數(shù)字的路徑匹配
新建一個converters.py文件,代碼如下:

class FourDigitYearConverter:
    # 定義正則表達式
    regex = '[0-9]{4}'

    def to_python(self, value):
        return value

    def to_url(self, value):
        return '%04d' % value

在urls.py文件下注冊自定義的轉換器

from django.urls import path,  converters
# 注冊自定義轉換器
register_converter(converters.FourDigitYearConverter, 'yyyy')  # yyyy是自定義轉換器的類型名稱
urlpatterns = [
  path('articles/<yyyy:year>', views.articles_yyyy),
]

這樣我們就可以匹配4位數(shù)字的url地址了

到此這篇關于Django實現(xiàn)自定義路由轉換器的文章就介紹到這了,更多相關Django 路由轉換器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用anaconda保證64位和32位的python共存

    利用anaconda保證64位和32位的python共存

    這篇文章主要為大家詳細介紹了利用anaconda保證64位和32位的python共存,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python實現(xiàn)使用遺傳算法進行圖片擬合

    python實現(xiàn)使用遺傳算法進行圖片擬合

    最近做項目需要圖像擬合,本文主要介紹了python實現(xiàn)使用遺傳算法進行圖片擬合,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python中*args和**kwargs的作用

    Python中*args和**kwargs的作用

    *args和**kwargs,以及單獨的*,**到底是啥作用呢?原理是啥呢?讀完這篇文章你就徹底明白了,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 中秋將至利用python畫一些月餅從天而降不用買了

    中秋將至利用python畫一些月餅從天而降不用買了

    中秋沒兩天就要到了,今天小編就利用python畫個月餅的小游戲,文中內容非常詳細,感興趣的小伙伴一定要收藏起來送給遠方的朋友呀
    2021-09-09
  • Python使用騰訊云API實現(xiàn)短信驗證碼功能

    Python使用騰訊云API實現(xiàn)短信驗證碼功能

    使用Python與騰訊云接口對接,實現(xiàn)短信驗證碼功能變得非常簡單,只需要幾行代碼就能夠輕松實現(xiàn)短信的發(fā)送,無須關心復雜的短信協(xié)議和底層實現(xiàn),讀者可以根據(jù)自己的實際需求,靈活使用騰訊云短信SDK提供的API來實現(xiàn)更豐富的短信功能
    2024-01-01
  • 教你利用python如何讀取txt中的數(shù)據(jù)

    教你利用python如何讀取txt中的數(shù)據(jù)

    們使用python的時候經(jīng)常需要讀取txt文件中的內容,下面這篇文章主要給大家介紹了關于利用python如何讀取txt中數(shù)據(jù)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • 使用Python統(tǒng)計代碼運行時間的兩種方法

    使用Python統(tǒng)計代碼運行時間的兩種方法

    有時候我們需要記錄一個程序運行的時間,下面這篇文章主要給大家介紹了關于使用Python統(tǒng)計代碼運行時間的兩種方法,文中通過圖文以及示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 33個Python爬蟲項目實戰(zhàn)(推薦)

    33個Python爬蟲項目實戰(zhàn)(推薦)

    這篇文章主要介紹了33個Python爬蟲項目實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • 分享一下如何編寫高效且優(yōu)雅的 Python 代碼

    分享一下如何編寫高效且優(yōu)雅的 Python 代碼

    這篇文章主要介紹了分享一下如何編寫高效且優(yōu)雅的 Python 代碼,需要的朋友可以參考下
    2017-09-09
  • 詳解如何使用Python實現(xiàn)過濾指定進程

    詳解如何使用Python實現(xiàn)過濾指定進程

    Python提供了多種方式來實現(xiàn)對進程的過濾和操作,本文將介紹如何利用Python來過濾指定進程,并展示一些實用的技巧和方法,希望對大家有所幫助
    2024-04-04

最新評論

来宾市| 桦川县| 清远市| 广汉市| 华亭县| 会宁县| 宝清县| 应用必备| 修水县| 东乡县| 米易县| 江津市| 出国| 保康县| 稻城县| 临洮县| 凤阳县| 中牟县| 监利县| 普兰县| 德安县| 舟曲县| 民权县| 柳州市| 泰和县| 中牟县| 灵璧县| 河东区| 游戏| 贡山| 台北市| 绵竹市| 丰镇市| 清河县| 上蔡县| 曲阳县| 牟定县| 安平县| 武汉市| 江孜县| 司法|