Jes*_*ose 6 python werkzeug flask
我想捕捉与前缀开头的所有URL /stuff,这样下面的例子匹配:/users,/users/,和/users/604511/edit。目前我编写了多个规则来匹配所有内容。有没有办法编写一个规则来匹配我想要的?
@blueprint.route('/users')
@blueprint.route('/users/')
@blueprint.route('/users/<path:path>')
def users(path=None):
return str(path)
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 10
将多个规则分配给同一个端点是合理的。这是最直接的解决方案。
如果您想要一个规则,您可以编写一个自定义转换器来捕获空字符串或以斜杠开头的任意数据。
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'
Run Code Online (Sandbox Code Playgroud)
例如,如果您确实想匹配任何以/users为前缀的内容,/users-no-slash/test请将规则更改为更加宽松:regex = r'.*?'。
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |