【flask进阶学习笔记】1.自定义URL转换器

1、自定义方法:

a 实现一个类,继承“BaseConverter

b 在自定义类中,重写‘regex’,也就是这个变量的正则表达式;

c 将自定义类映射到“app.url_map.converters”上。

举例:实现一个URL中,自定义手机号码格式

from werkzeug.routing import BaseConverter
 
 
Class TelephoneConverter(BaseConverter):
    #第一位为1,第二位选一个数字,剩下9位任选数字
    regex=r'1[85734]\d{9}
 
app.url_map.converters['tel']=TelephoneConverter
 
 
@app.route('/telephone/<tel:my_tel>/')
def my_tel(my_tel):
    return '手机号码是: %s' % my_tel

2、两个方法:
to_python(self,value)方法,该方法返回值,将会传递到view视图函数中作为参数;to_url(self,values)方法,返回值将会在调用url_for函数的时候生成符合要求的url形式

举例:+号隔开url名字

from flask import Flask,url_for
from werkzeug.routing import  BaseConverter
 
app = Flask(__name__)
 
class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split('+')
    def to_url(self, value):
        return '+'.join(value)
        
app.url_map.converters['list']=ListConverter 
 
@app.route('/')
def hello_world():
    print(url_for('posts',boards=['a','b']))	# 打印出的结果是/posts/a+b/
 
    return 'hello world'
 
@app.route('/posts/<list:boards>/')
def posts(boards):
    print(boards)	# 若传递的boards值为a+b,打印出的结果是['a','b']
    return "提交的板块是: %s" % boards	# 提交的板块是:['a','b']
 
if __name__ == '__main__':
    app.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值