django 2.0 path
一 2.几 和1.几 的区别
- django2.几的re_path和1.几的url一样
- 2.几多了一个path,不支持正则
二 2.0 path
from django.urls import path from . import views urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug>/', views.article_detail), # path才支持,re_path不支持 path('order/<int:year>',views.order), ]
基本规则:
- 使用时导入 from django.urls import path
- 不支支持正则 , 精准匹配
- 使用尖括号 <> 从url中捕获值
- 捕获值中可以包含一个转换器类型,比如使用
<int:year>
捕获一个整数变量
path转换器
Django默认有5个转换器:
- str ,匹配除路径分割符(/)之外的非空字符串,这是默认形式
- int ,匹配正整数,包含0
- slug, 匹配字母、数字以及斜杠、下划线组成的字符串
- uuid,匹配格式化的uuid,如:075194d3-6885-417e-a8a8-6c931e272f00
- path,匹配任何非空字符串,包含路径分隔符(/)(不能用?)
自定义转换器
1 写一个类:(使用时候直接复制过来 改regex即可)
class Test: regex = '[0-9]{4}' def to_python(self, value): # 写一堆处理 value=value+'aaa' return value def to_url(self, value): return '%04d' % value 2 from django.urls import register_converter 3 register_converter(Test,'ttt') 4 path('index/<ttt:year>', views.index,name='index'),
要求:
- regex 类属性,字符串类型
- to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。
- to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向解析使用。