django内置的url转换器,包括有int、str、uuid等等。但是有时候他们不能满足我们的需求,因此就需要使用自定义url转换器。
自定义url转换器的五步:
1、定义一个类,直接继承自object就可以
2、在类中定义一个属性regex,这个属性是用来限制url转换器规则的正则表达式。
3、实现to_python(self,value)方法,这个方法是将url中的值转换下,然后传给视图函数的。
4、实现to_url(self,value)方法,这个方法是在做url反转的时候,将传进来的参数转换后拼接成一个正确的url。
5、将定义好的转换器,使用'django.urls.converters.register_converter'方法注册到django中。
例如在查询文章分类时:url连接类型为:127.0.0.1:8000/article/python+django+pandas/
在app根目录创建converter.py文件
from django.urls import register_converter
class CategoryConverter(object):
regex = r'\w+|(\w+\+\w+)+'
def to_python(self, value):
# 将url里的'python+django+pandas'转换成:['python', 'django', 'pandas']传给视图函数
result = value.split('+')
return result
def to_url(self, value):
if isinstance(value, list):
# 将视图函数里的['python', 'django', 'pandas']转换成'python+django+pandas'传给URL
result = '+'.join(value)
retur

本文介绍了如何在Django中创建自定义URL转换器,以满足超出内置转换器功能的需求。步骤包括定义继承自object的转换器类,设置regex属性,实现to_python和to_url方法,并通过'django.urls.converters.register_converter'进行注册。文中以查询文章分类为例,展示了自定义转换器在实际应用中的用法。
最低0.47元/天 解锁文章
1093

被折叠的 条评论
为什么被折叠?



