标签:stc map 校验 重写 form for 表达式 使用 mat
BaseConverter
(werkzeug.routing.BaseConverter)。regex
,也就是这个变量的正则表达式。app.url_map.converters
上,如:# 普通转换器
class MobileConverter(BaseConverter):
regex = r'1[3-9]\d{9}'
app.url_map.converters['mobile'] = MobileConverter # 添加mobile转换器, 添加了后, 则可以在url中使用 `mobile` 这个转换器了
@app.router('/<mobile:mobile>/')
def my_mobile(mobile):
return '我的手机号码为: {}'.format(mobile)
# 自定义路由转换器
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
app.config.update(DEBUG=True)
# 1. 定义自己的转换器, 万能正则转换器
class RegexConverter(BaseConverter):
"""正则路由转换器"""
def __init__(self, map, regex):
super().__init__(map)
# 将正则表达式的参数保存到对象的属性中, flask会去使用这个属性来进行路由的匹配
self.regex = regex
# 2. 将自定义的转换器添加到Flask的应用中
app.url_map.converters['re'] = RegexConverter
@app.route('/send/<re(r"1[3-9]\d{9}"):mobile>/') # 使用
def send_sms(mobile):
return 'send sms to {}'.format(mobile)
# --------------------------
class MobileConverter(BaseConverter):
"""普通转换器, 专用于校验手机号码"""
def __init__(self, map):
super().__init__(map) # 父类调用不调用,对这个我感觉没有影响
self.regex = r'1[3-9]\d{9}'
app.url_map.converters['mobile'] = MobileConverter
@app.route('/<mobile:mobile>/')
def mobile(mobile):
return 'moible: {}'.format(mobile)
if __name__ == "__main__":
app.run(port=8000)
to_python
的作用:在转换器类中,实现to_python(self, value)
方法,这个方法的返回值,将会传递到view视图函数中作为参数.
class ListConverter(BaseConverter):
def to_python(self, value):
# return value.split('+')
return 'hello'
app.url_map.converters['list'] = ListConverter
@app.route('/posts/<list:boards>/')
def boards(boards):
return '您提交的模块是: {}'.format(boards)
# 访问:http://127.0.0.1:8000/posts/a+b/
# 返回结果为: 您提交的模块是: hello # 第二个 return 'hello'
### 返回结果为: 您提交的模块是: ['a', 'b'] # 第一个return value.split('+')
to_url
的作用:在转换器类中,实现to_url(self, value)
方法,这个方法的返回值,将会在调用url_for
函数的时候生成符合要求的URL
形式.
标签:stc map 校验 重写 form for 表达式 使用 mat
原文地址:https://www.cnblogs.com/nichengshishaonian/p/11631664.html