zoukankan      html  css  js  c++  java
  • Python-Flask-定义正则转换器匹配路由参数

    第一种:

    from flask import Flask
    from werkzeug.routing import BaseConverter


    class RegexCoverter(BaseConverter):
    """自定义正则的转换器"""
    regex = "[0-9]{6}"

    app = Flask(__name__)

    #将自己的转换器添加到默认的转换器列表中
    app.url_map.converters['re'] = RegexCoverter

    @app.route('/')
    def index():
    return 'index'

    @app.route('/demo1/<re:user_id>')
    def demo1(user_id):
    return '用户ID是:%s' % user_id

    if __name__ == '__main__':
    app.run(debug=True)

    第二种:

    from flask import Flask
    from flask import redirect
    from flask import url_for
    from werkzeug.routing import BaseConverter


    class RegexConverter(BaseConverter):
    """自定义正则的转换器"""

    def __init__(self, url_map, *args):
    super(RegexConverter, self).__init__(url_map)
    # 取到第1个参数,给regex属性赋值
    self.regex = args[0]


    class ListConverter(BaseConverter):
    """自己定义转换器"""
    regex = "(\d+,?)+\d$"

    def to_python(self, value):
    """当匹配到参数之后,对参数做进一步处理之后,再返回给视图函数中"""
    return value.split(',')

    def to_url(self, value):
    """使用url_for的时候,对视图函数传的参数进行处理,处理完毕之后以便能够进行路由匹配"""
    result = ','.join(str(v) for v in value)
    return result


    app = Flask(__name__)
    # 将自己的转换器添加到默认的转换器列表中
    app.url_map.converters["re"] = RegexConverter
    app.url_map.converters["list"] = ListConverter


    @app.route('/')
    def index():
    return 'index'


    # 规则:/user/6位数字 [0-9]{6}
    # 自定义转换器

    @app.route('/user/<re("[0-9]{6}"):user_id>')
    def demo1(user_id):
    return '用户id是 %s' % user_id


    @app.route('/users/<list:user_ids>')
    def demo2(user_ids):
    # 如果才能在视图函数中接收到的 user_ids 就是一个列表
    return "用户的id列表是 %s" % user_ids


    @app.route('/demo3')
    def demo3():
    return redirect(url_for('demo2', user_ids=[1, 3, 4, 5]))


    if __name__ == '__main__':
    app.run(debug=True)

  • 相关阅读:
    F#周报2019年第40期
    F#周报2019年第39期
    F#周报2019年第38期
    python模块之time_random
    python小趣味_520绘制一个心形.
    python模块之json_pickle_shelve
    python基础17_列表推导式 vs 生成器表达式
    python基础16_闭包_装饰器
    Spark安装笔记
    python基础15下_迭代器_生成器
  • 原文地址:https://www.cnblogs.com/wf8998/p/13293502.html
Copyright © 2011-2022 走看看