django 自定義url轉換器

2022-07-20 11:24:12 字數 1353 閱讀 5999

django內建的url轉換器,包括有int、str、uuid等等。但是有時候他們不能滿足我們的需求,因此就需要使用自定義url轉換器。

自定義url轉換器的五步:

1、定義乙個類,直接繼承自object就可以

2、在類中定義乙個屬性regex,這個屬性是用來限制url轉換器規則的正規表示式。

3、實現to_python(self,value)方法,這個方法是將url中的值轉換下,然後傳給檢視函式的。

4、實現to_url(self,value)方法,這個方法是在做url反轉的時候,將傳進來的引數轉換後拼接成乙個正確的url。

5、將定義好的轉換器,使用'django.urls.converters.register_converter'方法註冊到django中。

from django.urls import

register_converter

class

categoryconverter(object):

regex = r'

\w+|(\w+\+\w+)+

'def

to_python(self, value):

#將url裡的'python+django+pandas'轉換成:['python', 'django', 'pandas']傳給檢視函式

result = value.split('+'

)

return

result

defto_url(self, value):

ifisinstance(value, list):

#將檢視函式裡的['python', 'django', 'pandas']轉換成'python+django+pandas'傳給url

result = '+'

.join(value)

return

result

else

:

raise runtimeerror('

轉換url的時候,分類引數必須為列表')

#register_converter(上面自己定義的類名,自定義的型別名(在urls.py檔案中使用))

register_converter(categoryconverter, '

cate

')

from . import converters

在urls.py中使用即可,如:

path('

article/

',views.article_classify_list,name='

article_classify

'),

Django 自定義url轉換器

django包含內建的url轉換器,有int uuid等。有時候這些內建的url轉換器並不能滿足我們的需求,因此django給我們提供了乙個介面可以讓我們自己定義自己的url轉換器。自定義url轉換器按照以下五個步驟來走就可以了 定義乙個類,直接繼承自object就可以了。在類中定義乙個屬性rege...

django 自定義url轉換器

django內建的url轉換器,包括有int str uuid等等。但是有時候他們不能滿足我們的需求,因此就需要使用自定義url轉換器。自定義url轉換器的五步 1 定義乙個類,直接繼承自object就可以 2 在類中定義乙個屬性regex,這個屬性是用來限制url轉換器規則的正規表示式。3 實現t...

django開發系列 自定義URL轉換器

實現乙個獲取文章列表的demo,使用者可以根據 articles 文章分類 的方式來獲取文章。其中文章分類採用的是分類1 分類2 分類3.的方式拼接的,並且如果只有乙個分類,那就不需要加號。示例如下 articles python articles python django articles py...