python - 为什么没有像主应用程序那样将自定义 url 转换器添加到蓝图的选项?

标签 python werkzeug flask

this post并在 official docs我们了解了如何为主应用程序对象添加自定义 url 转换器。 这是一个简短的例子:

app = Flask(__name__)
app.url_map.converters['list'] = ListConverter

但是如何为蓝图做到这一点呢?此全局(应用程序级别)自定义转换器不可用于蓝图。 在源代码中我还没有发现这样的可能性......

最佳答案

无法在蓝图上使用自定义 URL 转换器的技术原因是,与应用程序不同,蓝图没有 URL 映射。

当您使用蓝图的 route 装饰器或 add_url_map() 方法时,蓝图所做的就是记录稍后调用这些方法的应用程序版本的意图。 register_blueprint() 被调用。

我不确定允许蓝图特定的 url 转换器是否有好处。但我认为允许蓝图安装应用程序范围的转换器是合理的。这可以使用与其他蓝图应用程序范围处理程序相同的技术,例如 before_app_request

def add_app_url_converter(self, name, f):
    self.record_once(lambda s: s.app.url_map.converters[name] = f
    return f

Blueprint.add_app_url_converter = add_app_url_converter

# ...

bp = Blueprint('mybp', __name__)
bp.add_app_url_converter('list', ListConverter)

关于python - 为什么没有像主应用程序那样将自定义 url 转换器添加到蓝图的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977449/

相关文章:

python - 如何在python中多线程调用另一个端点方法?

JQuery AJAX BeforeSend CSRF 保护

python - <urlopen错误隧道连接失败: 403 Forbidden> error in using geopy on pythonanywhere servers

python - 使用 Beautifulsoup 解析 Airdna.co

python - 如何获取 python 解释器完整的 argv 命令行选项?

django - 如何在托管在 Heroku 上的 Django 项目中使用 Werkzeug 交互式回溯调试器?

python - 如果我尝试在 IPython 中绘制图表,则图表为空

python - 通过合并包含可变大小列表的列在 df 中创建字典列

python - Flask 的内置服务器总是 404 并设置了 SERVER_NAME

mysql - 使用flask-migrate时出现Flask迁移错误