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.路径),
...
]