django 自定义url转换器
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'),
django 自定义url转换器的更多相关文章
- python_flask 基础巩固(自定义URL转换器)
自定义URL转换器(在BaseConverter类外定义)from werkzeug.routing import BaseConverter定义类继承BaseConverter 实现类app.url ...
- flask第十一篇——自定义url转换器
首先和大家说一下flask的组成,flask其实是werkzeug(路由和http处理)+SQLAlchemy(数据库)+Jinja2(模板)组成的,今天我们要看到的东西就是`werkzeug`里面的 ...
- python3 Flask -day4 自定义url转换器
url传参可以限定参数的数据类型,例如:限定user_id数据类型为int @app.route('/user/<int:user_id>') def my_list(user_id): ...
- flask第十二篇——自定义url转换器【2】
继续昨天的话题,今天我们来写一个手机号的转换器,方便大家理解 我们在`BaseConverter`源码里看到好多这种正则表达式: 正则表达式的目的就是规范匹配的规则,现在我们写一个简单的匹配手机号的正 ...
- 4、Flask实战第4天:自定义url转换器
url传参可以限定参数的数据类型,例如:限定user_id数据类型为int @app.route('/user/<int:user_id>') def my_list(user_id): ...
- flask 自定义url转换器
from werkzeug.routing import BaseConverter app = Flask(__name__) class TeleConveter(BaseConverter): ...
- 自制URL转换器
自定义 url 转换器五个步骤: 定义一个类. 在类中定义一个属性 regex ,这个属性是用来保存 url 转换器规则的正则表达式. 实现 to_python(self,value) 方法, ...
- 六:flask-自定义URL转换器
flask进行url参数匹配的时候,是继承的werkzeug.routing.BaseConverter库进行重写的 导入看源码 里面有所有的URL参数数据类型的判断 也就是说,可以继承过后实现自己的 ...
- Django(6)自定义路由转换器
自定义路径转换器 有时候上面的内置的url转换器并不能满足我们的需求,因此django给我们提供了一个接口可以让我们自己定义自己的url转换器 django内置的路径转换器源码解析 在我们自定义路由转 ...
随机推荐
- 快捷使用 Iterm2 连接SSH ( HTTP代理 )
1,配置iterm2 > Preferences.. > Profiles > 填写:name : 别名 : Command : expect /Users/jerryxu/wwwr ...
- demo 基于html css 实现小米官网部分内容搭建
文件夹目录 mi-site-----------主文件夹 css------------css文件文件夹 fonts.css---矢量图标css index.css---主页面样式css reset. ...
- PHP0001:PHP环境搭建
1,本机域名解析 网站域名访问流程 配置阿帕奇服务器 的 路径 阿帕奇中添加 PHP 支持 一个简单的PHP 代码 检测PHP apache 语法 httpd -t apache 的启动 获取网站 ...
- 产生随机数(rand()函数和srand()函数)
有时候,我们需要随机产生一个在某范围的数,C/C++提供了一个库函数rand()来产生随机数. 函数原型:int rand(void); 功能:返回一个[0,RAND_MAX]间的随机整数.其中RAN ...
- CodeForces - 1105D 多源搜索
#include<bits/stdc++.h> using namespace std; typedef long long ll; struct node{ int x,y; ll se ...
- hextorgb
function hexToRgb(hex) { // By Tim Down - http://stackoverflow.com/a/5624139/3493650 // Expand short ...
- Pwnable.kr
Dragon —— 堆之 uaf 开始堆的学习之旅. uaf漏洞利用到了堆的管理中fastbin的特性,关于堆的各种分配方式参见堆之*bin理解 在SecretLevel函数中,发现了隐藏的syste ...
- react-native简单使用
基本组件的使用介绍 View: Text: TextInput: Image: Button: ActivityIndicator: ScrollView:这是一个列表滚动的组件 ListView:也 ...
- react-native-----hello word!
react-native运行helloword 今天是个特殊的时刻,我前天开始学习react-native,一直环境塔建出错,运行打包出错,今晚,我终于把这个难搞的环境给搭建好了,并成功运行了第一个h ...
- Mysql快速入门(二)
多表关联查询 JOIN 按照功能大致分为如下三类: CROSS JOIN(交叉连接) INNER JOIN(内连接或等值连接). OUTER JOIN(外连接) 交叉连接 交叉连接的关键字:CROSS ...