名称空间2.0path

Django 1点几跟2点几的区别

2.0path 是什么路径就是什么路径。第一个参数不再是正则表达式。

 

转换器

path的分组

<int:year> 匹配正整数

<str:year> 除了斜杠之外的非空字符

<slug:year> 字母数字下划线-组成的字符串

<uuid:year> 随机字符串 (可以用来生成客户的id)

<path:year> 任意非空字符串

 

 

自定义转换器

对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点:

  • regex 类属性,字符串类型
  • to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。
  • to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。
class FourDigitYearConverter:  
    regex = '[0-9]{4}'  
    def to_python(self, value):  
        return int(value)  
    def to_url(self, value):  
        return '%04d' % value 

使用register_converter 将其注册到URL配置中:

from django.urls import register_converter, path  
from . import converters, views  
register_converter(converters.FourDigitYearConverter, 'yyyy')  
urlpatterns = [  
    path('articles/2003/', views.special_case_2003),  
    path('articles/<yyyy:year>/', views.year_archive),  
    ...  
]



 

posted @ 2019-01-08 20:35  张仁国  阅读(137)  评论(0编辑  收藏  举报
目录代码