zoukankan      html  css  js  c++  java
  • flask 自定义转换器

    from flask import Flask
    from flask import url_for
    from flask import redirect
    from werkzeug.routing import BaseConverter
    """
    路由提取参数与自定义路由转化器进阶
    """
    app = Flask(__name__, static_url_path='/static', static_folder='static', template_folder='templates')
    
    
    # 万能转换器
    class RegexConverter(BaseConverter):
    
        def __init__(self, url_map, regex):
            # 调用父类的初始化方法
            super(RegexConverter, self).__init__(url_map)
            # 将正则表达式的参数保存到对象的属性中,flask会去使用这个属性来进行路由的正则匹配
            self.regex = regex
            # self.regex 固定的属性,专门用来存放正则表达式
    
        def to_python(self, value):
            """"""
            print("to_python方法被调用")
            # return "abc"
            # value是在路径进行正则表达式匹配的时候提取的参数
            return value
    
        def to_url(self, value):
            """使用url_for的方法的时候被调用"""
            print("to_url方法被调用")
            # return "15811111111"
            return value
    
    
    # 将自定义的转换器添加到flask的应用中
    app.url_map.converters["re"] = RegexConverter
    
    
    # re(参数): 参数传入正则表达式,这样就可以转换任何你传入的规则
    @app.route("/send_phone/<re(r'1[34578]d{9}'):mobile_num>")
    def send_phone(mobile_num):
        return "send phone to %s" % mobile_num
    
    
    @app.route("/index")
    def index():
        url = url_for("send_sms", mobile_num="18922222222")
        # /send/18922222222
        return redirect(url)
    
    
    if __name__ == '__main__':
        app.run(debug=True)
  • 相关阅读:
    python开发环境安装
    python文件I/O
    python字符串方法以及注释
    python列表
    php: Can't use function return value in write context
    Notice : brew install php70
    对web开发从业者的发展方向的思考
    关于微信跨号支付
    MySQL触发器写法
    MySQL慢查询日志
  • 原文地址:https://www.cnblogs.com/yuqiangli0616/p/10342613.html
Copyright © 2011-2022 走看看