Django Path转换器自定义及正则代码实例

方予
方予
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍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转换器的基础用法及自定义实现方法,希望能对读者的学习有所帮助。欢迎继续支持本站获取更多技术资源。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表