当前位置:首页 - Python

flask路由正则表达式

作者:高景洋 日期:2021-06-11 06:48:20 浏览次数:1124

在flask开发过程中,我们有时会需要用正则匹配路由,那我们需要怎么做呢?


直接看下边的代码


1、需要一个正则匹配类,我们将它放在 项目中的 url_helper.py 中


from werkzeug.routing import BaseConverter

class RegexConverter(BaseConverter):
"""
自定义URL匹配正则表达式
"""

def __init__(self, map, regex):
super(RegexConverter, self).__init__(map)
self.regex = regex

def to_python(self, value):
"""
路由匹配时,匹配成功后传递给视图函数中参数的值
:param value:
:return:
"""
return value

def to_url(self, value):
"""
使用url_for反向生成URL时,传递的参数经过该方法处理,返回的值用于生成URL中的参数
:param value:
:return:
"""
val = super(RegexConverter, self).to_url(value)
return val


2、将正则类注册到flask中


app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter


3、进行路由引用



@app.route('/<regex("beijing|qingdao"):key>.html')
def method_test(key):      
    do something



本文永久性链接:
<a href="http://r4.com.cn/art192.aspx">flask路由正则表达式</a>
当前header:Host: r4.com.cn X-Host1: r4.com.cn X-Host2: r4.com.cn X-Host3: 127.0.0.1:8080 X-Forwarded-For: 34.229.63.28 X-Real-Ip: 34.229.63.28 X-Domain: r4.com.cn X-Request: GET /art192.aspx HTTP/1.1 X-Request-Uri: /art192.aspx Connection: close User-Agent: CCBot/2.0 (https://commoncrawl.org/faq/) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 If-Modified-Since: Thu, 01 Jun 2023 09:05:35 GMT Accept-Encoding: br,gzip