动态翻译 Pyramid 的视图参数

Dynamically translating Pyramid's view arguments

假设我有一个观点:

my_view(request: Request, uuid: UUID):
     pass

我想自动将所有 uuid 对象转换为基于 base64 的字符串,这样框架用户就不需要手动调用 slug_to_uuid()uuid_to_slug。这将适用于所有视图,并且基于 Python 3 参数签名类型提示(如果它提示它是 UUID 对象,那么您希望将其转换为字符串并返回)。

我可以在 Pyramid 中使用哪些钩子和方法?

使用functools.singledispatchhttps://docs.python.org/3/library/functools.html#functools.singledispatch

您询问的是 2 个工作流程。 1) 翻译传入的数据。 2) 在 url 秒内翻译输出数据。

在 Pyramid 中,传入数据的转换应该由装饰器、视图映射器或可能的谓词完成。您必须决定哪个最适合您的用例。 Tweens 没有意义,因为它们发生在 matchdict 之前。

就 url 代而言,route_url 唯一可用的挂钩是路线上的 [​​=12=],它可以接受 kwargs 并翻译它们。