django自定義URL(PATH)轉換器

2021-09-25 07:55:59 字數 2818 閱讀 7825

當我們需要用url傳遞一些引數的時候,我們用《變數》來進行傳參,例如下面**:

path('tiaozhuan/', views.tiaozhuan, name='gohere'),

但是url是乙個字串型別,我們如果想講引數以int型別,list型別傳進去呢,這個時候就需要自定義url轉換器了,如下:

path('getlist//', views.get_list, name='list1'),

這個cate型別等會講,這個是我自定義的乙個將str轉list型別的轉換器

當然轉換器是可以互相轉化的,reserve函式也可以同時呼叫轉化器完成轉換

django有好多內建的轉換器,這個工作原理就是在url字串型別(訪問**)和其他型別(傳參進函式進行運算)之間相互轉換

如果有不明白推薦大家開啟converters方法的原始檔進行檢視,我們可以看到兩個函式to_python和to_str就是完成的這個工作,如下:

class

intconverter

: regex =

'[0-9]+'

defto_python

(self, value)

:return

int(value)

defto_url

(self, value)

:return

str(value)

匯入內建的轉換器:from django import converters

我們已經了解它的應用場景和原理了,現在我們自己來製作乙個轉換器,一共有4步

second step

在這個檔案寫入轉換器轉換的規則例如下:

from django.urls import converters,register_converter

#這個類的用處就是在瀏覽器中url只能為str型別,而reserve傳參需要將其他型別變成str型別,

#同理,將url中的字串中的資料當做引數傳入函式運算時需要變成其他相應型別。

#自定義url轉換器,在這裡我們將 liabi+luban+pangu 一類的字串和列表之間進行相互轉化

class

categoryconverter

(object):

regex = r'\w+|(\w+\+\w+)+'

defto_python

(self, value)

:#將字串轉化為引數

#libai+luban+pangu

#['libai','luban','pangu']

result = value.split(

"+")

return result

defto_url

(self, value)

:#反過來,用於reverse反轉函式傳參

ifisinstance

(value,

list):

result =

"+".join(value)

return result

else

:raise runtimeerror(

"轉化url的時候,分類引數必須為列表!"

)#註冊上面寫的類

register_converter(categoryconverter,

'cate'

)

這裡演示的是將libai+luban+pangu這一類字串(中間帶+號或者單個字串)進行匹配,regex為正規表示式

register_converter:用來註冊寫好的這個類

third step超級重要,不然run不了別罵我

forth step

在views.py檔案中寫入函式**:

"這是首頁"

"得到英雄列表為%s"

%hero_name)在urls.py檔案中寫入路由**

from django.urls import path,re_path

from

.import views

#from django.urls import converters,register_converter

urlpatterns=

[ path(

'', views.index)

, path(

'getlist//'

, views.get_list, name=

'list1'),

]

Django 自定義標籤

模版是乙個用django模版語言標記過的python字串。模版可以包含模版標籤和變數。模版標籤是在乙個模版裡起作用的標記。比如,乙個模版標籤可以產生控制結構的內容 if或者for 可以獲取資料庫內容或者訪問其它模版標籤。乙個標籤塊被包圍 變數標籤被 包圍 context是乙個傳遞給模版的key va...

Django自定義函式

templates 母版.html 引入 extends include 自定義函式 simpla tag 2.任意python檔案 a.from django import template from django.utils.safestring import mark safe registe...

django自定義Color Picker控制項

django提供了豐富的部件,以滿足我們對各種html控制項的需求。並且如果有特別的要求,我們還可以很容易的編寫自己的控制項,本文主要內容是自定義乙個顏色選擇器的控制項,該控制項是在input的基礎上,實現顏色的選擇和展示。如果你不知道如何實現自定義django的form控制項的話,可以檢視djan...