Django Path转换器自定义及正则代码实例
本文详细介绍Django中默认Path转换器的用法,包括str、int、slug、uuid和path五种类型。重点讲解如何创建自定义转换器(如Year_Converters)并通过register_converter注册,以及在urls.py中使用re_path进行正则表达式匹配的具体代码示例和注意事项。
Django默认Path转换器详解
Django框架提供了多种内置的Path转换器,用于简化URL路由中的参数提取与类型转换。
- str转换器:匹配任何非空字符串,但不包含斜杠/。若未在URL路径中显式指定转换器,系统将默认使用此类型。
- int转换器:仅匹配0及正整数,并将提取的参数自动转换为Python的int类型返回。
- slug转换器:适用于URL末尾的解释性字符,如文章后缀或分类标签。它匹配ASCII字符、连字符和下划线,例如'building-your-1st-django-site'。
- uuid转换器:用于匹配标准UUID格式的对象。为确保唯一性,要求必须包含破折号且所有字母均为小写,例如'075194d3-6885-417e-a8a8-6c931e272f00'。该转换器返回一个UUID对象。
- path转换器:匹配任何非空字符串,其核心特性是允许包含路径分隔符/。此转换器适用于需要匹配完整URL路径而非分段字符串的场景。
自定义转换器创建与注册
步骤1:在urls.py文件所在的同级目录下,新建一个名为converters.py的文件,用于存放自定义转换器类。
class Year_Converters():
regex = '\d{4}'
def to_python(self,value):
return int(value)
def to_url(self,value):
# return ;04d' % value
return str(value)
步骤2:在urls.py文件中注册自定义转换器。需导入register_converter函数,并调用该函数将自定义转换器类与别名关联。
from django.urls import path,register_converter
from . import views
from . import converters
#注册转换器
register_converter(converters.Year_Converters,'year')
urlpatterns = [
path('show1/<year:arg>', views.show1),
]
正则表达式URL配置
正则表达式配置:在urls.py中使用re_path时,注意正则参数需包裹在括号内,此处参数为元组形式。
from django.urls import re_path
urlpatterns = [
re_path('article/(\d+)/', views.index),
]
正则关键字示例:展示如何使用re_path结合正则表达式捕获特定格式的参数,如四位数字ID。
re_path(r'^show3/(?P<id>\d{4})/', views.show3)
以上内容涵盖了Django Path转换器的基础用法及自定义实现方法,希望能对读者的学习有所帮助。欢迎继续支持本站获取更多技术资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









