實現一個獲取文章列表的demo,用戶能夠根據/articles/文章分類/
的方式來獲取文章。其中文章分類採用的是分類1+分類2+分類3...
的方式拼接的,而且若是隻有一個分類,那就不須要加號。示例以下:python
# 1. 第一種:獲取python分類下的文章 /articles/python/ # 2. 第二種:獲取python和django分類下的文章 /articles/python+django/ # 3. 第三種:獲取python和django和flask分類下的文章 /articles/python+django+flask/ 以此類推...
在「文章分類」參數傳到視圖函數以前要把這些分類分開來存儲到列表中。
好比參數是python+django
,那麼傳到視圖函數的時候就要變成['python','django']
。正則表達式
之後在使用reverse反轉的時候,限制傳遞「文章分類」的參數應該是一個列表,而且要將這個列表變成python+django
的形式。django
以前已經學到過一些django內置的url轉換器,包括有int、uuid等。有時候這些內置的url轉換器並不能知足咱們的需求,所以django給咱們提供了一個接口能夠讓咱們本身定義本身的url轉換器。flask
自定義url轉換器按照如下五個步驟來走就能夠了:函數
django.urls.converters.register_converter
方法註冊到django中。示例代碼以下:ui
from django.urls import register_converter class CategoryConverter(object): regex = r'\w+|(\w+\+\w+)+' def to_python(self,value): # python+django+flask # ['python','django','flask'] result = value.split("+") return result def to_url(self,value): # value:['python','django','flask'] # python+django+flask if isinstance(value,list): result = "+".join(value) return result else: raise RuntimeError("轉換url的時候,分類參數必須爲列表!") register_converter(CategoryConverter,'cate')