django path - 封装正则 自动转换类型

django2.0版的path中

规则

- 使用尖括号<>从url中捕获
- 语法:<内置匹配器:自定义名> 自定义名传给视图内,request后

封装了5种匹配方法

常用

语法匹配规则
str默认:匹配除了路径分隔符(/)之外的非空字符串
int匹配正整数,包含0
slug匹配字母、数字以及横杠、下划线组成的字符串
uuid匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00
path匹配任何非空字符串,包含了路径分隔符 问号不包含

例子

from django.urls import path  
from . import views  # 导入视图路径
urlpatterns = [  
    path('articles/2003/', views.special_case_2003), 

    # 匹配int类型,views内接request后 接收一个int类型 
    path('articles/<int:year>/', views.对应函数1),   
    # 匹配int类型,views内接request后 接收两个int类型 
    path('articles/<int:year>/<int:month>/', views.对应函数2),
     # 匹配int类型,views内接request后 接收两个int类型 和 一个匹配字符-数字等的字符串  
    path('articles/<int:year>/<int:month>/<slug>/', views.对应函数3),  
]

就自定义!!!

建议单独建一个 urlconvert.py (url转换器) 单独建一个py文件存放自定义的

1. 先建一个py文件内写入规则
2. 在urls中注册第一步的路径方法
3. 正常引用

单独的py文件内:

class MonConvert:   # 自定义名
    regex = '[0-9]{2}'  # 正则规则
    # 【下面两个必须这样写!!!!!】
    def to_python(self, value):  
        return int(value)  
    def to_url(self, value):  # 反向解析
        return '%04d' % value

urls中引用注册自定义模版

# 要引入注册自定义匹配膜拜模块
from django.urls import register_converter
import MonConvert

register_converter(MonConvert, 'mm')  # mm取的名字,无所谓,后面引用这个名字匹配正则即可
urlpatterns = [   
    path('articles/<mm:year>/', views.路径),  
    ...  
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值