st3网站开发,创建企业,软件开发定制平台,厦门市建设工程造价网步骤 创建自定义转换器类 必须定义 regex 属性#xff08;用于匹配参数#xff09;。必须实现 to_python 和 to_url 方法。 to_python: 将匹配的参数转换为视图函数可用的 Python 数据。to_url: 将数据转换为 URL 格式#xff08;用于反向解析#xff09;。 注册转换器 使用… 步骤 创建自定义转换器类 必须定义 regex 属性用于匹配参数。必须实现 to_python 和 to_url 方法。 to_python: 将匹配的参数转换为视图函数可用的 Python 数据。to_url: 将数据转换为 URL 格式用于反向解析。 注册转换器 使用 register_converter 将自定义转换器注册到 Django 的路由系统。 在路由中使用转换器 转换器导包
from django.urls import converters 定义 一个匹配非数字的 # 导入StringConverter 转换器
from django.urls.converters import StringConverter# 继承StringConverter 直接定义或者修改方法
class NonumConverter(StringConverter):regex r[^\d] # 匹配一个或多个非数字字符def to_python(self, value):# URL 参数直接作为字符串返回return valuedef to_url(self, value):# 返回适合插入到 URL 中的字符串return value
全局注册
from django.urls.converters import DEFAULT_CONVERTERS# 注册转换器到全局转换器集合
DEFAULT_CONVERTERS[nonum] NonumConverter局部注册
from django.urls import register_converterregister_converter(NonumConverter, nonum)示例
创建转换器
假设需要自定义一个转换器 FourDigitYearConverter用于匹配四位年份。
# converters.pyclass FourDigitYearConverter:regex r\d{4} # 匹配四位数字def to_python(self, value):return int(value) # 转换为整数def to_url(self, value):return f{value:04d} # 确保是四位数字
注册转换器
在 urls.py 中注册自定义转换器
from django.urls import path, register_converter
from . import converters, views# 注册转换器
register_converter(converters.FourDigitYearConverter, yyyy)urlpatterns [path(year/yyyy:year/, views.year_view, nameyear),
] 视图函数
from django.http import HttpResponsedef year_view(request, year):return HttpResponse(fThe year is {year}.)
反向解析
from django.urls import reverseurl reverse(year, kwargs{year: 2024})
print(url) # 输出/year/2024/