美文网首页
Flask路由提取参数与自定义路由转换器

Flask路由提取参数与自定义路由转换器

作者: 测试探索 | 来源:发表于2020-09-09 06:24 被阅读0次
转换器为int类型
from flask import Flask,current_app,redirect,url_for

# 创建flask应用对象
# __name__表示当前的模块名字
# 模块名,flask以整个模块所在的目录为总目录,默认整个目录中的static为静态目录
# templates为模板目录
app = Flask(__name__)


# 转换器
@app.route("/goods/<int:goods_id>")
def goods_detail(goods_id):
    """
    定义的视图函数
    :return:
    """
    return "goods detail page %s" % goods_id


if __name__ == '__main__':
    # 通过url_map可以查看整个flask中路由信息
    print(app.url_map)
    app.run(debug=True)
image.png
没有定义转换器类型,默认是普通字符串规则
from flask import Flask,current_app,redirect,url_for

# 创建flask应用对象
# __name__表示当前的模块名字
# 模块名,flask以整个模块所在的目录为总目录,默认整个目录中的static为静态目录
# templates为模板目录
app = Flask(__name__)

# 转换器
# @app.route("/goods/<int:goods_id>")   转换器类型为int
@app.route("/goods/<goods_id>")  #不加转换器类型,默认是普通字符串规则(除了/的字符)
def goods_detail(goods_id):
    """
    定义的视图函数
    :return:
    """
    return "goods detail page %s" % goods_id


if __name__ == '__main__':
    # 通过url_map可以查看整个flask中路由信息
    print(app.url_map)
    app.run(debug=True)

image.png
自定义转换器
from flask import Flask,current_app,redirect,url_for
#werkzeug提供关于路径解析设置的工具,BaseConverter转换器父类
from werkzeug.routing import BaseConverter

# 创建flask应用对象
# __name__表示当前的模块名字
# 模块名,flask以整个模块所在的目录为总目录,默认整个目录中的static为静态目录
# templates为模板目录
app = Flask(__name__)


# 转换器
# @app.route("/goods/<int:goods_id>")   转换器类型为int
@app.route("/goods/<goods_id>")  #不加转换器类型,默认是普通字符串规则(除了/的字符)
def goods_detail(goods_id):
    """
    定义的视图函数
    :return:
    """
    return "goods detail page %s" % goods_id

#1.定义自己的转换器
class RegexConverter(BaseConverter):
    """

    """
    def __init__(self,url_map,regex):
        #调用父类的初始化方法
        super().__init__(url_map)
        # 将正则表达式的参数保存到对象属性中,flask会去使用这个属性来进行路由的正则匹配
        self.regex = regex


#2. 将自定义的转换器添加到flask的应用中,只把类存进去,没有创建对象
app.url_map.converters["re"] = RegexConverter

@app.route("/send/<re(r'1[34578]\d{9}'):mobile>")
def send_sms(mobile):
    return "send sms to %s " % mobile


if __name__ == '__main__':
    # 通过url_map可以查看整个flask中路由信息
    print(app.url_map)
    app.run(debug=True)
image.png
image.png

相关文章

网友评论

      本文标题:Flask路由提取参数与自定义路由转换器

      本文链接:https://www.haomeiwen.com/subject/kqfkektx.html