django 2.0 path

一  2.几 和1.几 的区别

  1. django2.几的re_path和1.几的url一样
  2. 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反向解析使用。
posted @ 2018-09-07 19:41  Shinonon  阅读(277)  评论(0编辑  收藏  举报