发布于2020-02-10 15:18 阅读(1049) 评论(0) 点赞(30) 收藏(5)
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) return result else: raise RuntimeError('转换url的时候,分类参数必须为列表') # register_converter(上面自己定义的类名,自定义的类型名(在urls.py文件中使用)) register_converter(CategoryConverter, 'cate')
在app根目录下的__init__.py中添加:
from . import converters
在urls.py中使用即可,如:
path('article/<cate:classify>',views.article_classify_list,name='article_classify'),
链接:https://www.pythonheidong.com/blog/article/230663/35abd3f622594eaf0855/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!