python – 匹配任意路径或空字符串,而不添加多个Flask路径修饰符

我想捕获所有以前缀/ stuff开头的url,以便以下示例匹配:/ users,/ users /和/ users / 604511 / edit.目前我写了多个规则来匹配一切.有没有办法写一条规则来匹配我想要的?

@blueprint.route('/users')
@blueprint.route('/users/')
@blueprint.route('/users/<path:path>')
def users(path=None):
    return str(path)

解决方法:

将多个规则分配给同一端点是合理的.这是最直接的解决方案.

如果需要一个规则,可以编写一个custom converter来捕获空字符串或以斜杠开头的任意数据.

from flask import Flask
from werkzeug.routing import BaseConverter

class WildcardConverter(BaseConverter):
    regex = r'(|/.*?)'
    weight = 200

app = Flask(__name__)
app.url_map.converters['wildcard'] = WildcardConverter

@app.route('/users<wildcard:path>')
def users(path):
    return path

c = app.test_client()
print(c.get('/users').data)  # b''
print(c.get('/users-no-prefix').data)  # (404 NOT FOUND)
print(c.get('/users/').data)  # b'/'
print(c.get('/users/400617/edit').data)  # b'/400617/edit'

如果你真的想匹配以/ users为前缀的任何东西,例如/ users-no-slash / test,那么将规则更改为更宽松:regex = r’.*?’.

上一篇:救救自己,别再这样写简历了


下一篇:解放生产力「GitHub 热点速览 v.21.51」